diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,15 @@
 # Change Log
 
+## [2.1.0.0] - 2018-04-22
+  - Expose dynamic loader from Graphics.Vulkan.Dymamic
+  - Turn on platform specific features by default
+  - Make all foreign imports unsafe
+  - Add option for enabling safe calls
+
+## [2.0.0.1] - 2018-04-21
+  - Improved documentation (links, tables, math)
+  - Use cpphs for preprocessing
+
 ## [2.0.0.0] - 2018-04-20
   - Total rewrite of the generator
   - All extensions are in here
diff --git a/src/Graphics/Vulkan.hs b/src/Graphics/Vulkan.hs
--- a/src/Graphics/Vulkan.hs
+++ b/src/Graphics/Vulkan.hs
@@ -3,7 +3,7 @@
 
 
 module Graphics.Vulkan
-  (     module Graphics.Vulkan.NamedType
+  ( module Graphics.Vulkan.NamedType
   , module Graphics.Vulkan.Core10
   , module Graphics.Vulkan.Core11
   , module Graphics.Vulkan.Extensions
diff --git a/src/Graphics/Vulkan/Core10.hs b/src/Graphics/Vulkan/Core10.hs
--- a/src/Graphics/Vulkan/Core10.hs
+++ b/src/Graphics/Vulkan/Core10.hs
@@ -3,7 +3,7 @@
 
 
 module Graphics.Vulkan.Core10
-  (     module Graphics.Vulkan.Core10.Core
+  ( module Graphics.Vulkan.Core10.Core
   , module Graphics.Vulkan.Core10.Version
   , module Graphics.Vulkan.Core10.Constants
   , module Graphics.Vulkan.Core10.DeviceInitialization
diff --git a/src/Graphics/Vulkan/Core10/Buffer.hs b/src/Graphics/Vulkan/Core10/Buffer.hs
--- a/src/Graphics/Vulkan/Core10/Buffer.hs
+++ b/src/Graphics/Vulkan/Core10/Buffer.hs
@@ -42,16 +42,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -71,14 +71,14 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core10.MemoryManagement
   ( VkBuffer
@@ -384,7 +384,11 @@
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'VkBufferCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkCreateBuffer" vkCreateBuffer :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateBuffer" vkCreateBuffer :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult
 -- | vkDestroyBuffer - Destroy a buffer object
 --
 -- = Parameters
@@ -432,7 +436,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyBuffer" vkDestroyBuffer :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyBuffer" vkDestroyBuffer :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkBufferCreateInfo - Structure specifying the parameters of a newly
 -- created buffer object
 --
diff --git a/src/Graphics/Vulkan/Core10/BufferView.hs b/src/Graphics/Vulkan/Core10/BufferView.hs
--- a/src/Graphics/Vulkan/Core10/BufferView.hs
+++ b/src/Graphics/Vulkan/Core10/BufferView.hs
@@ -19,16 +19,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -49,14 +49,14 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkFormat(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core10.MemoryManagement
   ( VkBuffer
@@ -147,7 +147,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkBufferView', 'VkBufferViewCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkCreateBufferView" vkCreateBufferView :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateBufferView" vkCreateBufferView :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult
 -- | vkDestroyBufferView - Destroy a buffer view object
 --
 -- = Parameters
@@ -194,7 +198,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkBufferView', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyBufferView" vkDestroyBufferView :: ("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyBufferView" vkDestroyBufferView :: ("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkBufferViewCreateInfo - Structure specifying parameters of a newly
 -- created buffer view
 --
diff --git a/src/Graphics/Vulkan/Core10/CommandBuffer.hs b/src/Graphics/Vulkan/Core10/CommandBuffer.hs
--- a/src/Graphics/Vulkan/Core10/CommandBuffer.hs
+++ b/src/Graphics/Vulkan/Core10/CommandBuffer.hs
@@ -42,16 +42,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -75,8 +75,8 @@
   )
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -295,7 +295,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'VkCommandBufferAllocateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkAllocateCommandBuffers" vkAllocateCommandBuffers :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkAllocateCommandBuffers" vkAllocateCommandBuffers :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult
 -- | vkFreeCommandBuffers - Free command buffers
 --
 -- = Parameters
@@ -351,7 +355,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkFreeCommandBuffers" vkFreeCommandBuffers :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkFreeCommandBuffers" vkFreeCommandBuffers :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()
 -- | vkBeginCommandBuffer - Start recording a command buffer
 --
 -- = Parameters
@@ -413,7 +421,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'VkCommandBufferBeginInfo'
-foreign import ccall "vkBeginCommandBuffer" vkBeginCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkBeginCommandBuffer" vkBeginCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult
 -- | vkEndCommandBuffer - Finish recording a command buffer
 --
 -- = Parameters
@@ -481,7 +493,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkEndCommandBuffer" vkEndCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEndCommandBuffer" vkEndCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> IO VkResult
 -- | vkResetCommandBuffer - Reset a command buffer to the initial state
 --
 -- = Parameters
@@ -535,7 +551,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'VkCommandBufferResetFlags'
-foreign import ccall "vkResetCommandBuffer" vkResetCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkResetCommandBuffer" vkResetCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult
 -- | VkCommandBufferAllocateInfo - Structure specifying the allocation
 -- parameters for command buffer object
 --
diff --git a/src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs b/src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs
--- a/src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs
+++ b/src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs
@@ -100,17 +100,17 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( castPtr
+  ( Ptr
+  , castPtr
   , plusPtr
-  , Ptr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -154,36 +154,36 @@
   ( VkImageSubresourceRange(..)
   )
 import Graphics.Vulkan.Core10.MemoryManagement
-  ( VkImage
-  , VkBuffer
+  ( VkBuffer
+  , VkImage
   )
 import Graphics.Vulkan.Core10.Pass
-  ( VkFramebuffer
+  ( VkDependencyFlagBits(..)
+  , VkPipelineBindPoint(..)
   , VkAccessFlags
-  , VkDependencyFlagBits(..)
   , VkDependencyFlags
-  , VkPipelineBindPoint(..)
+  , VkFramebuffer
   )
 import Graphics.Vulkan.Core10.Pipeline
-  ( VkRenderPass
+  ( VkRect2D(..)
   , VkShaderStageFlagBits(..)
-  , VkPipelineLayout
-  , VkRect2D(..)
   , VkViewport(..)
   , VkPipeline
+  , VkPipelineLayout
+  , VkRenderPass
   )
 import Graphics.Vulkan.Core10.PipelineLayout
   ( VkShaderStageFlags
   )
 import Graphics.Vulkan.Core10.Query
   ( VkQueryResultFlagBits(..)
-  , VkQueryResultFlags
   , VkQueryPool
+  , VkQueryResultFlags
   )
 import Graphics.Vulkan.Core10.Queue
   ( VkPipelineStageFlagBits(..)
-  , VkPipelineStageFlags
   , VkCommandBuffer
+  , VkPipelineStageFlags
   )
 import Graphics.Vulkan.Core10.Sampler
   ( VkFilter(..)
@@ -420,7 +420,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline',
 -- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint'
-foreign import ccall "vkCmdBindPipeline" vkCmdBindPipeline :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBindPipeline" vkCmdBindPipeline :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()
 -- | vkCmdSetViewport - Set the viewport on a command buffer
 --
 -- = Parameters
@@ -501,7 +505,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkViewport'
-foreign import ccall "vkCmdSetViewport" vkCmdSetViewport :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetViewport" vkCmdSetViewport :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()
 -- | vkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer
 --
 -- = Parameters
@@ -597,7 +605,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'
-foreign import ccall "vkCmdSetScissor" vkCmdSetScissor :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetScissor" vkCmdSetScissor :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()
 -- | vkCmdSetLineWidth - Set the dynamic line width state
 --
 -- = Parameters
@@ -648,7 +660,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdSetLineWidth" vkCmdSetLineWidth :: ("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetLineWidth" vkCmdSetLineWidth :: ("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()
 -- | vkCmdSetDepthBias - Set the depth bias dynamic state
 --
 -- = Parameters
@@ -780,7 +796,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdSetDepthBias" vkCmdSetDepthBias :: ("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetDepthBias" vkCmdSetDepthBias :: ("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()
 -- | vkCmdSetBlendConstants - Set the values of blend constants
 --
 -- = Parameters
@@ -830,7 +850,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdSetBlendConstants" vkCmdSetBlendConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetBlendConstants" vkCmdSetBlendConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()
 -- | vkCmdSetDepthBounds - Set the depth bounds test values for a command
 -- buffer
 --
@@ -889,7 +913,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdSetDepthBounds" vkCmdSetDepthBounds :: ("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetDepthBounds" vkCmdSetDepthBounds :: ("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()
 -- | vkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state
 --
 -- = Parameters
@@ -944,7 +972,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'
-foreign import ccall "vkCmdSetStencilCompareMask" vkCmdSetStencilCompareMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetStencilCompareMask" vkCmdSetStencilCompareMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()
 -- | vkCmdSetStencilWriteMask - Set the stencil write mask dynamic state
 --
 -- = Parameters
@@ -1000,7 +1032,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'
-foreign import ccall "vkCmdSetStencilWriteMask" vkCmdSetStencilWriteMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetStencilWriteMask" vkCmdSetStencilWriteMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()
 -- | vkCmdSetStencilReference - Set the stencil reference dynamic state
 --
 -- = Parameters
@@ -1056,7 +1092,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'
-foreign import ccall "vkCmdSetStencilReference" vkCmdSetStencilReference :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetStencilReference" vkCmdSetStencilReference :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()
 -- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer
 --
 -- = Parameters
@@ -1227,7 +1267,11 @@
 -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',
 -- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'
-foreign import ccall "vkCmdBindDescriptorSets" vkCmdBindDescriptorSets :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBindDescriptorSets" vkCmdBindDescriptorSets :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()
 -- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer
 --
 -- = Parameters
@@ -1298,7 +1342,11 @@
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,
 -- 'VkIndexType'
-foreign import ccall "vkCmdBindIndexBuffer" vkCmdBindIndexBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBindIndexBuffer" vkCmdBindIndexBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()
 -- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer
 --
 -- = Parameters
@@ -1387,7 +1435,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdBindVertexBuffers" vkCmdBindVertexBuffers :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBindVertexBuffers" vkCmdBindVertexBuffers :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()
 -- | vkCmdDraw - Draw primitives
 --
 -- = Parameters
@@ -1569,7 +1621,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdDraw" vkCmdDraw :: ("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDraw" vkCmdDraw :: ("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()
 -- | vkCmdDrawIndexed - Issue an indexed draw into a command buffer
 --
 -- = Parameters
@@ -1773,7 +1829,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdDrawIndexed" vkCmdDrawIndexed :: ("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDrawIndexed" vkCmdDrawIndexed :: ("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()
 -- | vkCmdDrawIndirect - Issue an indirect draw into a command buffer
 --
 -- = Parameters
@@ -1991,7 +2051,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdDrawIndirect" vkCmdDrawIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDrawIndirect" vkCmdDrawIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
 -- | vkCmdDrawIndexedIndirect - Perform an indexed indirect draw
 --
 -- = Parameters
@@ -2209,7 +2273,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdDrawIndexedIndirect" vkCmdDrawIndexedIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDrawIndexedIndirect" vkCmdDrawIndexedIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
 -- | vkCmdDispatch - Dispatch compute work items
 --
 -- = Parameters
@@ -2355,7 +2423,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdDispatch" vkCmdDispatch :: ("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDispatch" vkCmdDispatch :: ("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()
 -- | vkCmdDispatchIndirect - Dispatch compute work items using indirect
 -- parameters
 --
@@ -2508,7 +2580,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdDispatchIndirect" vkCmdDispatchIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDispatchIndirect" vkCmdDispatchIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()
 -- | vkCmdCopyBuffer - Copy data between buffer regions
 --
 -- = Parameters
@@ -2613,7 +2689,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferCopy',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdCopyBuffer" vkCmdCopyBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdCopyBuffer" vkCmdCopyBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()
 -- | vkCmdCopyImage - Copy data between images
 --
 -- = Parameters
@@ -2927,7 +3007,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageCopy',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout'
-foreign import ccall "vkCmdCopyImage" vkCmdCopyImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdCopyImage" vkCmdCopyImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()
 -- | vkCmdBlitImage - Copy regions of an image, potentially performing format
 -- conversion,
 --
@@ -3250,7 +3334,11 @@
 -- 'Graphics.Vulkan.Core10.Sampler.VkFilter',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageBlit',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout'
-foreign import ccall "vkCmdBlitImage" vkCmdBlitImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBlitImage" vkCmdBlitImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()
 -- | vkCmdCopyBufferToImage - Copy data from a buffer into an image
 --
 -- = Parameters
@@ -3407,7 +3495,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout'
-foreign import ccall "vkCmdCopyBufferToImage" vkCmdCopyBufferToImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdCopyBufferToImage" vkCmdCopyBufferToImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()
 -- | vkCmdCopyImageToBuffer - Copy image data into a buffer
 --
 -- = Parameters
@@ -3565,7 +3657,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout'
-foreign import ccall "vkCmdCopyImageToBuffer" vkCmdCopyImageToBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdCopyImageToBuffer" vkCmdCopyImageToBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()
 -- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory
 --
 -- = Parameters
@@ -3681,7 +3777,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdUpdateBuffer" vkCmdUpdateBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdUpdateBuffer" vkCmdUpdateBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()
 -- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value
 --
 -- = Parameters
@@ -3773,7 +3873,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdFillBuffer" vkCmdFillBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdFillBuffer" vkCmdFillBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()
 -- | vkCmdClearColorImage - Clear regions of a color image
 --
 -- = Parameters
@@ -3918,7 +4022,11 @@
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout',
 -- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'
-foreign import ccall "vkCmdClearColorImage" vkCmdClearColorImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdClearColorImage" vkCmdClearColorImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()
 -- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil
 -- image
 --
@@ -4062,7 +4170,11 @@
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout',
 -- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'
-foreign import ccall "vkCmdClearDepthStencilImage" vkCmdClearDepthStencilImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdClearDepthStencilImage" vkCmdClearDepthStencilImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()
 -- | vkCmdClearAttachments - Clear regions within bound framebuffer
 -- attachments
 --
@@ -4153,7 +4265,11 @@
 --
 -- 'VkClearAttachment', 'VkClearRect',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdClearAttachments" vkCmdClearAttachments :: ("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdClearAttachments" vkCmdClearAttachments :: ("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()
 -- | vkCmdResolveImage - Resolve regions of an image
 --
 -- = Parameters
@@ -4325,7 +4441,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkImageResolve'
-foreign import ccall "vkCmdResolveImage" vkCmdResolveImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdResolveImage" vkCmdResolveImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()
 -- | vkCmdSetEvent - Set an event object to signaled state
 --
 -- = Parameters
@@ -4426,7 +4546,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Event.VkEvent',
 -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'
-foreign import ccall "vkCmdSetEvent" vkCmdSetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetEvent" vkCmdSetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()
 -- | vkCmdResetEvent - Reset an event object to non-signaled state
 --
 -- = Parameters
@@ -4532,7 +4656,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Event.VkEvent',
 -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'
-foreign import ccall "vkCmdResetEvent" vkCmdResetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdResetEvent" vkCmdResetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()
 -- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory
 --
 -- = Parameters
@@ -4768,7 +4896,11 @@
 -- 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Event.VkEvent', 'VkImageMemoryBarrier',
 -- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'
-foreign import ccall "vkCmdWaitEvents" vkCmdWaitEvents :: ("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdWaitEvents" vkCmdWaitEvents :: ("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()
 -- | vkCmdPipelineBarrier - Insert a memory dependency
 --
 -- = Parameters
@@ -5043,7 +5175,11 @@
 -- 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlags', 'VkImageMemoryBarrier',
 -- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'
-foreign import ccall "vkCmdPipelineBarrier" vkCmdPipelineBarrier :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdPipelineBarrier" vkCmdPipelineBarrier :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()
 -- | vkCmdBeginQuery - Begin a query
 --
 -- = Parameters
@@ -5155,7 +5291,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlags',
 -- 'Graphics.Vulkan.Core10.Query.VkQueryPool'
-foreign import ccall "vkCmdBeginQuery" vkCmdBeginQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBeginQuery" vkCmdBeginQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()
 -- | vkCmdEndQuery - Ends a query
 --
 -- = Parameters
@@ -5232,7 +5372,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Query.VkQueryPool'
-foreign import ccall "vkCmdEndQuery" vkCmdEndQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdEndQuery" vkCmdEndQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()
 -- | vkCmdResetQueryPool - Reset queries in a query pool
 --
 -- = Parameters
@@ -5300,7 +5444,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Query.VkQueryPool'
-foreign import ccall "vkCmdResetQueryPool" vkCmdResetQueryPool :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdResetQueryPool" vkCmdResetQueryPool :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()
 -- | vkCmdWriteTimestamp - Write a device timestamp into a query object
 --
 -- = Parameters
@@ -5434,7 +5582,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits',
 -- 'Graphics.Vulkan.Core10.Query.VkQueryPool'
-foreign import ccall "vkCmdWriteTimestamp" vkCmdWriteTimestamp :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdWriteTimestamp" vkCmdWriteTimestamp :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()
 -- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool
 -- to a buffer object
 --
@@ -5592,7 +5744,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,
 -- 'Graphics.Vulkan.Core10.Query.VkQueryPool',
 -- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlags'
-foreign import ccall "vkCmdCopyQueryPoolResults" vkCmdCopyQueryPoolResults :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdCopyQueryPoolResults" vkCmdCopyQueryPoolResults :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()
 -- | vkCmdPushConstants - Update the values of push constants
 --
 -- = Parameters
@@ -5686,7 +5842,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',
 -- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'
-foreign import ccall "vkCmdPushConstants" vkCmdPushConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdPushConstants" vkCmdPushConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()
 -- | vkCmdBeginRenderPass - Begin a new render pass
 --
 -- = Parameters
@@ -5818,7 +5978,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkRenderPassBeginInfo',
 -- 'VkSubpassContents'
-foreign import ccall "vkCmdBeginRenderPass" vkCmdBeginRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBeginRenderPass" vkCmdBeginRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()
 -- | vkCmdNextSubpass - Transition to the next subpass of a render pass
 --
 -- = Parameters
@@ -5893,7 +6057,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkSubpassContents'
-foreign import ccall "vkCmdNextSubpass" vkCmdNextSubpass :: ("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdNextSubpass" vkCmdNextSubpass :: ("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()
 -- | vkCmdEndRenderPass - End the current render pass
 --
 -- = Parameters
@@ -5946,7 +6114,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdEndRenderPass" vkCmdEndRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdEndRenderPass" vkCmdEndRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()
 -- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary
 -- command buffer
 --
@@ -6112,7 +6284,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdExecuteCommands" vkCmdExecuteCommands :: ("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdExecuteCommands" vkCmdExecuteCommands :: ("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()
 -- | VkClearRect - Structure specifying a clear rectangle
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Core10/CommandPool.hs b/src/Graphics/Vulkan/Core10/CommandPool.hs
--- a/src/Graphics/Vulkan/Core10/CommandPool.hs
+++ b/src/Graphics/Vulkan/Core10/CommandPool.hs
@@ -29,16 +29,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -58,8 +58,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -204,7 +204,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkCommandPool', 'VkCommandPoolCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkCreateCommandPool" vkCreateCommandPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateCommandPool" vkCreateCommandPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult
 -- | vkDestroyCommandPool - Destroy a command pool object
 --
 -- = Parameters
@@ -265,7 +269,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkCommandPool', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyCommandPool" vkDestroyCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyCommandPool" vkDestroyCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkResetCommandPool - Reset a command pool
 --
 -- = Parameters
@@ -328,7 +336,11 @@
 --
 -- 'VkCommandPool', 'VkCommandPoolResetFlags',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkResetCommandPool" vkResetCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkResetCommandPool" vkResetCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult
 -- | VkCommandPoolCreateInfo - Structure specifying parameters of a newly
 -- created command pool
 --
diff --git a/src/Graphics/Vulkan/Core10/Constants.hs b/src/Graphics/Vulkan/Core10/Constants.hs
--- a/src/Graphics/Vulkan/Core10/Constants.hs
+++ b/src/Graphics/Vulkan/Core10/Constants.hs
@@ -35,8 +35,8 @@
   ( Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Core10/Core.hs b/src/Graphics/Vulkan/Core10/Core.hs
--- a/src/Graphics/Vulkan/Core10/Core.hs
+++ b/src/Graphics/Vulkan/Core10/Core.hs
@@ -302,8 +302,8 @@
   ( Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Core10/DescriptorSet.hs b/src/Graphics/Vulkan/Core10/DescriptorSet.hs
--- a/src/Graphics/Vulkan/Core10/DescriptorSet.hs
+++ b/src/Graphics/Vulkan/Core10/DescriptorSet.hs
@@ -57,16 +57,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -89,14 +89,14 @@
   ( VkBufferView
   )
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core10.Image
   ( VkImageLayout(..)
@@ -108,8 +108,8 @@
   ( VkBuffer
   )
 import Graphics.Vulkan.Core10.PipelineLayout
-  ( VkShaderStageFlags
-  , VkDescriptorSetLayout
+  ( VkDescriptorSetLayout
+  , VkShaderStageFlags
   )
 import Graphics.Vulkan.Core10.Sampler
   ( VkSampler
@@ -444,7 +444,11 @@
 -- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',
 -- 'VkDescriptorSetLayoutCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkCreateDescriptorSetLayout" vkCreateDescriptorSetLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDescriptorSetLayout" vkCreateDescriptorSetLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult
 -- | vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object
 --
 -- = Parameters
@@ -492,7 +496,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyDescriptorSetLayout" vkDestroyDescriptorSetLayout :: ("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyDescriptorSetLayout" vkDestroyDescriptorSetLayout :: ("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkCreateDescriptorPool - Creates a descriptor pool object
 --
 -- = Parameters
@@ -549,7 +557,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDescriptorPool', 'VkDescriptorPoolCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkCreateDescriptorPool" vkCreateDescriptorPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDescriptorPool" vkCreateDescriptorPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult
 -- | vkDestroyDescriptorPool - Destroy a descriptor pool object
 --
 -- = Parameters
@@ -604,7 +616,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDescriptorPool',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyDescriptorPool" vkDestroyDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyDescriptorPool" vkDestroyDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkResetDescriptorPool - Resets a descriptor pool object
 --
 -- = Parameters
@@ -658,7 +674,11 @@
 --
 -- 'VkDescriptorPool', 'VkDescriptorPoolResetFlags',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkResetDescriptorPool" vkResetDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkResetDescriptorPool" vkResetDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult
 -- | vkAllocateDescriptorSets - Allocate one or more descriptor sets
 --
 -- = Parameters
@@ -748,7 +768,11 @@
 --
 -- 'VkDescriptorSet', 'VkDescriptorSetAllocateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkAllocateDescriptorSets" vkAllocateDescriptorSets :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkAllocateDescriptorSets" vkAllocateDescriptorSets :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult
 -- | vkFreeDescriptorSets - Free one or more descriptor sets
 --
 -- = Parameters
@@ -820,7 +844,11 @@
 --
 -- 'VkDescriptorPool', 'VkDescriptorSet',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkFreeDescriptorSets" vkFreeDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkFreeDescriptorSets" vkFreeDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult
 -- | vkUpdateDescriptorSets - Update the contents of a descriptor set object
 --
 -- = Parameters
@@ -900,7 +928,11 @@
 -- 'VkCopyDescriptorSet',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkWriteDescriptorSet'
-foreign import ccall "vkUpdateDescriptorSets" vkUpdateDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkUpdateDescriptorSets" vkUpdateDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ()
 -- | VkDescriptorBufferInfo - Structure specifying descriptor buffer info
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Core10/Device.hs b/src/Graphics/Vulkan/Core10/Device.hs
--- a/src/Graphics/Vulkan/Core10/Device.hs
+++ b/src/Graphics/Vulkan/Core10/Device.hs
@@ -28,16 +28,16 @@
   , CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -57,14 +57,14 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDeviceFeatures(..)
+  ( VkAllocationCallbacks(..)
+  , VkPhysicalDeviceFeatures(..)
   , VkDevice
-  , VkAllocationCallbacks(..)
   , VkPhysicalDevice
   )
 
@@ -215,7 +215,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkCreateDevice" vkCreateDevice :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDevice" vkCreateDevice :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult
 -- | vkDestroyDevice - Destroy a logical device
 --
 -- = Parameters
@@ -270,7 +274,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyDevice" vkDestroyDevice :: ("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyDevice" vkDestroyDevice :: ("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkDeviceQueueCreateInfo - Structure specifying parameters of a newly
 -- created device queue
 --
diff --git a/src/Graphics/Vulkan/Core10/DeviceInitialization.hs b/src/Graphics/Vulkan/Core10/DeviceInitialization.hs
--- a/src/Graphics/Vulkan/Core10/DeviceInitialization.hs
+++ b/src/Graphics/Vulkan/Core10/DeviceInitialization.hs
@@ -142,26 +142,26 @@
   ( Vector
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   , Word8
   )
 import Foreign.C.Types
-  ( CFloat(..)
+  ( CChar(..)
+  , CFloat(..)
   , CSize(..)
-  , CChar(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -182,9 +182,9 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkStructureType(..)
   , VkFormat(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 
@@ -1830,7 +1830,11 @@
 -- = See Also
 --
 -- 'VkAllocationCallbacks', 'VkInstance', 'VkInstanceCreateInfo'
-foreign import ccall "vkCreateInstance" vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateInstance" vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult
 -- | vkDestroyInstance - Destroy an instance of Vulkan
 --
 -- = Parameters
@@ -1868,7 +1872,11 @@
 -- = See Also
 --
 -- 'VkAllocationCallbacks', 'VkInstance'
-foreign import ccall "vkDestroyInstance" vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyInstance" vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible
 -- to a Vulkan instance
 --
@@ -1926,7 +1934,11 @@
 -- = See Also
 --
 -- 'VkInstance', 'VkPhysicalDevice'
-foreign import ccall "vkEnumeratePhysicalDevices" vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumeratePhysicalDevices" vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult
 -- | vkGetDeviceProcAddr - Return a function pointer for a command
 --
 -- = Parameters
@@ -1971,7 +1983,11 @@
 -- = See Also
 --
 -- 'PFN_vkVoidFunction', 'VkDevice'
-foreign import ccall "vkGetDeviceProcAddr" vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceProcAddr" vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction
 -- | vkGetInstanceProcAddr - Return a function pointer for a command
 --
 -- = Parameters
@@ -2044,7 +2060,11 @@
 -- = See Also
 --
 -- 'PFN_vkVoidFunction', 'VkInstance'
-foreign import ccall "vkGetInstanceProcAddr" vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetInstanceProcAddr" vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction
 -- | vkGetPhysicalDeviceProperties - Returns properties of a physical device
 --
 -- = Parameters
@@ -2066,7 +2086,11 @@
 -- = See Also
 --
 -- 'VkPhysicalDevice', 'VkPhysicalDeviceProperties'
-foreign import ccall "vkGetPhysicalDeviceProperties" vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceProperties" vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()
 -- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the
 -- queues of the specified physical device
 --
@@ -2109,7 +2133,11 @@
 -- = See Also
 --
 -- 'VkPhysicalDevice', 'VkQueueFamilyProperties'
-foreign import ccall "vkGetPhysicalDeviceQueueFamilyProperties" vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceQueueFamilyProperties" vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()
 -- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the
 -- specified physical device
 --
@@ -2131,7 +2159,11 @@
 -- = See Also
 --
 -- 'VkPhysicalDevice', 'VkPhysicalDeviceMemoryProperties'
-foreign import ccall "vkGetPhysicalDeviceMemoryProperties" vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceMemoryProperties" vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()
 -- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device
 --
 -- = Parameters
@@ -2155,7 +2187,11 @@
 -- = See Also
 --
 -- 'VkPhysicalDevice', 'VkPhysicalDeviceFeatures'
-foreign import ccall "vkGetPhysicalDeviceFeatures" vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceFeatures" vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()
 -- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format
 -- capabilities
 --
@@ -2183,7 +2219,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties',
 -- 'VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceFormatProperties" vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceFormatProperties" vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()
 -- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image
 -- format capabilities
 --
@@ -2277,7 +2317,11 @@
 -- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkImageCreateFlags',
 -- 'VkImageFormatProperties', 'VkImageTiling', 'VkImageType',
 -- 'VkImageUsageFlags', 'VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceImageFormatProperties" vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceImageFormatProperties" vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult
 -- | VkExtent3D - Structure specifying a three-dimensional extent
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Core10/Event.hs b/src/Graphics/Vulkan/Core10/Event.hs
--- a/src/Graphics/Vulkan/Core10/Event.hs
+++ b/src/Graphics/Vulkan/Core10/Event.hs
@@ -22,16 +22,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -51,8 +51,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -152,7 +152,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent',
 -- 'VkEventCreateInfo'
-foreign import ccall "vkCreateEvent" vkCreateEvent :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateEvent" vkCreateEvent :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult
 -- | vkDestroyEvent - Destroy an event object
 --
 -- = Parameters
@@ -198,7 +202,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'
-foreign import ccall "vkDestroyEvent" vkDestroyEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyEvent" vkDestroyEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetEventStatus - Retrieve the status of an event object
 --
 -- = Parameters
@@ -261,7 +269,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'
-foreign import ccall "vkGetEventStatus" vkGetEventStatus :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetEventStatus" vkGetEventStatus :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult
 -- | vkSetEvent - Set an event to signaled state
 --
 -- = Parameters
@@ -305,7 +317,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'
-foreign import ccall "vkSetEvent" vkSetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkSetEvent" vkSetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult
 -- | vkResetEvent - Reset an event to non-signaled state
 --
 -- = Parameters
@@ -354,7 +370,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'
-foreign import ccall "vkResetEvent" vkResetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkResetEvent" vkResetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult
 -- | VkEventCreateInfo - Structure specifying parameters of a newly created
 -- event
 --
diff --git a/src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs b/src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs
--- a/src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs
+++ b/src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs
@@ -23,12 +23,12 @@
   ( CChar(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -115,7 +115,11 @@
 -- = See Also
 --
 -- 'VkExtensionProperties'
-foreign import ccall "vkEnumerateInstanceExtensionProperties" vkEnumerateInstanceExtensionProperties :: ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumerateInstanceExtensionProperties" vkEnumerateInstanceExtensionProperties :: ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult
 -- | vkEnumerateDeviceExtensionProperties - Returns properties of available
 -- physical device extensions
 --
@@ -173,7 +177,11 @@
 --
 -- 'VkExtensionProperties',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkEnumerateDeviceExtensionProperties" vkEnumerateDeviceExtensionProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumerateDeviceExtensionProperties" vkEnumerateDeviceExtensionProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult
 -- | VkExtensionProperties - Structure specifying a extension properties
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Core10/Fence.hs b/src/Graphics/Vulkan/Core10/Fence.hs
--- a/src/Graphics/Vulkan/Core10/Fence.hs
+++ b/src/Graphics/Vulkan/Core10/Fence.hs
@@ -23,20 +23,20 @@
   , FiniteBits
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -56,9 +56,9 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkBool32(..)
+  ( VkBool32(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -145,7 +145,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence', 'VkFenceCreateInfo'
-foreign import ccall "vkCreateFence" vkCreateFence :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateFence" vkCreateFence :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult
 -- | vkDestroyFence - Destroy a fence object
 --
 -- = Parameters
@@ -193,7 +197,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence'
-foreign import ccall "vkDestroyFence" vkDestroyFence :: ("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyFence" vkDestroyFence :: ("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkResetFences - Resets one or more fence objects
 --
 -- = Parameters
@@ -256,7 +264,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence'
-foreign import ccall "vkResetFences" vkResetFences :: ("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkResetFences" vkResetFences :: ("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult
 -- | vkGetFenceStatus - Return the status of a fence
 --
 -- = Parameters
@@ -321,7 +333,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence'
-foreign import ccall "vkGetFenceStatus" vkGetFenceStatus :: ("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetFenceStatus" vkGetFenceStatus :: ("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult
 -- | vkWaitForFences - Wait for one or more fences to become signaled
 --
 -- = Parameters
@@ -404,7 +420,11 @@
 --
 -- @VkBool32@, 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence'
-foreign import ccall "vkWaitForFences" vkWaitForFences :: ("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkWaitForFences" vkWaitForFences :: ("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult
 -- | VkFenceCreateInfo - Structure specifying parameters of a newly created
 -- fence
 --
diff --git a/src/Graphics/Vulkan/Core10/Image.hs b/src/Graphics/Vulkan/Core10/Image.hs
--- a/src/Graphics/Vulkan/Core10/Image.hs
+++ b/src/Graphics/Vulkan/Core10/Image.hs
@@ -31,16 +31,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -64,19 +64,19 @@
   )
 import Graphics.Vulkan.Core10.Core
   ( VkFormat(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkImageUsageFlags
-  , VkImageTiling(..)
-  , VkSampleCountFlagBits(..)
+  ( VkAllocationCallbacks(..)
   , VkExtent3D(..)
+  , VkImageTiling(..)
   , VkImageType(..)
-  , VkImageCreateFlags
-  , VkAllocationCallbacks(..)
+  , VkSampleCountFlagBits(..)
   , VkDevice
+  , VkDeviceSize
+  , VkImageCreateFlags
+  , VkImageUsageFlags
   )
 import Graphics.Vulkan.Core10.MemoryManagement
   ( VkImage
@@ -394,7 +394,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageCreateInfo'
-foreign import ccall "vkCreateImage" vkCreateImage :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateImage" vkCreateImage :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult
 -- | vkDestroyImage - Destroy an image object
 --
 -- = Parameters
@@ -441,7 +445,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage'
-foreign import ccall "vkDestroyImage" vkDestroyImage :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyImage" vkDestroyImage :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetImageSubresourceLayout - Retrieve information about an image
 -- subresource
 --
@@ -523,7 +531,11 @@
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageSubresource',
 -- 'VkSubresourceLayout'
-foreign import ccall "vkGetImageSubresourceLayout" vkGetImageSubresourceLayout :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetImageSubresourceLayout" vkGetImageSubresourceLayout :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ()
 -- | VkImageCreateInfo - Structure specifying the parameters of a newly
 -- created image object
 --
diff --git a/src/Graphics/Vulkan/Core10/ImageView.hs b/src/Graphics/Vulkan/Core10/ImageView.hs
--- a/src/Graphics/Vulkan/Core10/ImageView.hs
+++ b/src/Graphics/Vulkan/Core10/ImageView.hs
@@ -43,16 +43,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -73,8 +73,8 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkFormat(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -368,7 +368,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImageView',
 -- 'VkImageViewCreateInfo'
-foreign import ccall "vkCreateImageView" vkCreateImageView :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateImageView" vkCreateImageView :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult
 -- | vkDestroyImageView - Destroy an image view object
 --
 -- = Parameters
@@ -415,7 +419,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImageView'
-foreign import ccall "vkDestroyImageView" vkDestroyImageView :: ("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyImageView" vkDestroyImageView :: ("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkComponentMapping - Structure specifying a color component mapping
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Graphics/Vulkan/Core10/LayerDiscovery.hs b/src/Graphics/Vulkan/Core10/LayerDiscovery.hs
--- a/src/Graphics/Vulkan/Core10/LayerDiscovery.hs
+++ b/src/Graphics/Vulkan/Core10/LayerDiscovery.hs
@@ -23,12 +23,12 @@
   ( CChar(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -107,7 +107,11 @@
 -- = See Also
 --
 -- 'VkLayerProperties'
-foreign import ccall "vkEnumerateInstanceLayerProperties" vkEnumerateInstanceLayerProperties :: ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumerateInstanceLayerProperties" vkEnumerateInstanceLayerProperties :: ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult
 -- | vkEnumerateDeviceLayerProperties - Returns properties of available
 -- physical device layers
 --
@@ -164,7 +168,11 @@
 --
 -- 'VkLayerProperties',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkEnumerateDeviceLayerProperties" vkEnumerateDeviceLayerProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumerateDeviceLayerProperties" vkEnumerateDeviceLayerProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult
 -- | VkLayerProperties - Structure specifying layer properties
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Core10/Memory.hs b/src/Graphics/Vulkan/Core10/Memory.hs
--- a/src/Graphics/Vulkan/Core10/Memory.hs
+++ b/src/Graphics/Vulkan/Core10/Memory.hs
@@ -28,16 +28,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -57,14 +57,14 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkDeviceSize
   )
 
 
@@ -221,7 +221,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceMemory', 'VkMemoryAllocateInfo'
-foreign import ccall "vkAllocateMemory" vkAllocateMemory :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkAllocateMemory" vkAllocateMemory :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult
 -- | vkFreeMemory - Free device memory
 --
 -- = Parameters
@@ -291,7 +295,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkDeviceMemory'
-foreign import ccall "vkFreeMemory" vkFreeMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkFreeMemory" vkFreeMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkMapMemory - Map a memory object into application address space
 --
 -- = Parameters
@@ -405,7 +413,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceMemory', @VkDeviceSize@, 'VkMemoryMapFlags'
-foreign import ccall "vkMapMemory" vkMapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkMapMemory" vkMapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult
 -- | vkUnmapMemory - Unmap a previously mapped memory object
 --
 -- = Parameters
@@ -434,7 +446,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkDeviceMemory'
-foreign import ccall "vkUnmapMemory" vkUnmapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkUnmapMemory" vkUnmapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ()
 -- | vkFlushMappedMemoryRanges - Flush mapped memory ranges
 --
 -- = Parameters
@@ -498,7 +514,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMappedMemoryRange'
-foreign import ccall "vkFlushMappedMemoryRanges" vkFlushMappedMemoryRanges :: ("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkFlushMappedMemoryRanges" vkFlushMappedMemoryRanges :: ("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult
 -- | vkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory
 -- objects
 --
@@ -555,7 +575,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMappedMemoryRange'
-foreign import ccall "vkInvalidateMappedMemoryRanges" vkInvalidateMappedMemoryRanges :: ("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkInvalidateMappedMemoryRanges" vkInvalidateMappedMemoryRanges :: ("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult
 -- | vkGetDeviceMemoryCommitment - Query the current commitment for a
 -- VkDeviceMemory
 --
@@ -599,7 +623,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceMemory', @VkDeviceSize@
-foreign import ccall "vkGetDeviceMemoryCommitment" vkGetDeviceMemoryCommitment :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceMemoryCommitment" vkGetDeviceMemoryCommitment :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ()
 -- | VkMemoryAllocateInfo - Structure containing parameters of a memory
 -- allocation
 --
diff --git a/src/Graphics/Vulkan/Core10/MemoryManagement.hs b/src/Graphics/Vulkan/Core10/MemoryManagement.hs
--- a/src/Graphics/Vulkan/Core10/MemoryManagement.hs
+++ b/src/Graphics/Vulkan/Core10/MemoryManagement.hs
@@ -18,12 +18,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -34,8 +34,8 @@
   ( VkResult(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkDevice
+  ( VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core10.Memory
   ( VkDeviceMemory
@@ -138,7 +138,11 @@
 --
 -- 'VkBuffer', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMemoryRequirements'
-foreign import ccall "vkGetBufferMemoryRequirements" vkGetBufferMemoryRequirements :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetBufferMemoryRequirements" vkGetBufferMemoryRequirements :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()
 -- | vkBindBufferMemory - Bind device memory to a buffer object
 --
 -- = Parameters
@@ -257,7 +261,11 @@
 --
 -- 'VkBuffer', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@
-foreign import ccall "vkBindBufferMemory" vkBindBufferMemory :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkBindBufferMemory" vkBindBufferMemory :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult
 -- | vkGetImageMemoryRequirements - Returns the memory requirements for
 -- specified Vulkan object
 --
@@ -292,7 +300,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImage',
 -- 'VkMemoryRequirements'
-foreign import ccall "vkGetImageMemoryRequirements" vkGetImageMemoryRequirements :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetImageMemoryRequirements" vkGetImageMemoryRequirements :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()
 -- | vkBindImageMemory - Bind device memory to an image object
 --
 -- = Parameters
@@ -398,7 +410,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,
 -- 'VkImage'
-foreign import ccall "vkBindImageMemory" vkBindImageMemory :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkBindImageMemory" vkBindImageMemory :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult
 -- | VkMemoryRequirements - Structure specifying memory requirements
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Core10/Pass.hs b/src/Graphics/Vulkan/Core10/Pass.hs
--- a/src/Graphics/Vulkan/Core10/Pass.hs
+++ b/src/Graphics/Vulkan/Core10/Pass.hs
@@ -71,16 +71,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -100,14 +100,14 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkFormat(..)
+  ( VkFormat(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkSampleCountFlagBits(..)
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
+  , VkSampleCountFlagBits(..)
   , VkDevice
   )
 import Graphics.Vulkan.Core10.Image
@@ -843,7 +843,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkFramebuffer',
 -- 'VkFramebufferCreateInfo'
-foreign import ccall "vkCreateFramebuffer" vkCreateFramebuffer :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateFramebuffer" vkCreateFramebuffer :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult
 -- | vkDestroyFramebuffer - Destroy a framebuffer object
 --
 -- = Parameters
@@ -890,7 +894,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkFramebuffer'
-foreign import ccall "vkDestroyFramebuffer" vkDestroyFramebuffer :: ("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyFramebuffer" vkDestroyFramebuffer :: ("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkCreateRenderPass - Create a new render pass object
 --
 -- = Parameters
@@ -936,7 +944,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass', 'VkRenderPassCreateInfo'
-foreign import ccall "vkCreateRenderPass" vkCreateRenderPass :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateRenderPass" vkCreateRenderPass :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult
 -- | vkDestroyRenderPass - Destroy a render pass object
 --
 -- = Parameters
@@ -984,7 +996,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass'
-foreign import ccall "vkDestroyRenderPass" vkDestroyRenderPass :: ("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyRenderPass" vkDestroyRenderPass :: ("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetRenderAreaGranularity - Returns the granularity for optimal render
 -- area
 --
@@ -1043,7 +1059,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass'
-foreign import ccall "vkGetRenderAreaGranularity" vkGetRenderAreaGranularity :: ("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetRenderAreaGranularity" vkGetRenderAreaGranularity :: ("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ()
 -- | VkAttachmentDescription - Structure specifying an attachment description
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Core10/Pipeline.hs b/src/Graphics/Vulkan/Core10/Pipeline.hs
--- a/src/Graphics/Vulkan/Core10/Pipeline.hs
+++ b/src/Graphics/Vulkan/Core10/Pipeline.hs
@@ -181,21 +181,21 @@
   ( Word32
   )
 import Foreign.C.Types
-  ( CFloat(..)
-  , CChar(..)
+  ( CChar(..)
+  , CFloat(..)
   , CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -217,13 +217,13 @@
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
   , VkFormat(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkSampleCountFlagBits(..)
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
+  , VkSampleCountFlagBits(..)
   , VkDevice
   )
 import Graphics.Vulkan.Core10.PipelineCache
@@ -2107,7 +2107,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkGraphicsPipelineCreateInfo', 'VkPipeline',
 -- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'
-foreign import ccall "vkCreateGraphicsPipelines" vkCreateGraphicsPipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateGraphicsPipelines" vkCreateGraphicsPipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult
 -- | vkCreateComputePipelines - Creates a new compute pipeline object
 --
 -- = Parameters
@@ -2188,7 +2192,11 @@
 -- 'VkComputePipelineCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline',
 -- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'
-foreign import ccall "vkCreateComputePipelines" vkCreateComputePipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateComputePipelines" vkCreateComputePipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult
 -- | vkDestroyPipeline - Destroy a pipeline object
 --
 -- = Parameters
@@ -2235,7 +2243,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline'
-foreign import ccall "vkDestroyPipeline" vkDestroyPipeline :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyPipeline" vkDestroyPipeline :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkOffset2D - Structure specifying a two-dimensional offset
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Core10/PipelineCache.hs b/src/Graphics/Vulkan/Core10/PipelineCache.hs
--- a/src/Graphics/Vulkan/Core10/PipelineCache.hs
+++ b/src/Graphics/Vulkan/Core10/PipelineCache.hs
@@ -27,16 +27,16 @@
   ( CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -56,8 +56,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -181,7 +181,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkPipelineCache', 'VkPipelineCacheCreateInfo'
-foreign import ccall "vkCreatePipelineCache" vkCreatePipelineCache :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreatePipelineCache" vkCreatePipelineCache :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult
 -- | vkDestroyPipelineCache - Destroy a pipeline cache object
 --
 -- = Parameters
@@ -227,7 +231,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkPipelineCache'
-foreign import ccall "vkDestroyPipelineCache" vkDestroyPipelineCache :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyPipelineCache" vkDestroyPipelineCache :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetPipelineCacheData - Get the data store from a pipeline cache
 --
 -- = Parameters
@@ -340,7 +348,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkPipelineCache'
-foreign import ccall "vkGetPipelineCacheData" vkGetPipelineCacheData :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPipelineCacheData" vkGetPipelineCacheData :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult
 -- | vkMergePipelineCaches - Combine the data stores of pipeline caches
 --
 -- = Parameters
@@ -403,7 +415,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkPipelineCache'
-foreign import ccall "vkMergePipelineCaches" vkMergePipelineCaches :: ("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkMergePipelineCaches" vkMergePipelineCaches :: ("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult
 -- | VkPipelineCacheCreateInfo - Structure specifying parameters of a newly
 -- created pipeline cache
 --
diff --git a/src/Graphics/Vulkan/Core10/PipelineLayout.hs b/src/Graphics/Vulkan/Core10/PipelineLayout.hs
--- a/src/Graphics/Vulkan/Core10/PipelineLayout.hs
+++ b/src/Graphics/Vulkan/Core10/PipelineLayout.hs
@@ -24,16 +24,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -53,8 +53,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -156,7 +156,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',
 -- 'VkPipelineLayoutCreateInfo'
-foreign import ccall "vkCreatePipelineLayout" vkCreatePipelineLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreatePipelineLayout" vkCreatePipelineLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult
 -- | vkDestroyPipelineLayout - Destroy a pipeline layout object
 --
 -- = Parameters
@@ -201,7 +205,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'
-foreign import ccall "vkDestroyPipelineLayout" vkDestroyPipelineLayout :: ("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyPipelineLayout" vkDestroyPipelineLayout :: ("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkPushConstantRange - Structure specifying a push constant range
 --
 -- == Valid Usage
diff --git a/src/Graphics/Vulkan/Core10/Query.hs b/src/Graphics/Vulkan/Core10/Query.hs
--- a/src/Graphics/Vulkan/Core10/Query.hs
+++ b/src/Graphics/Vulkan/Core10/Query.hs
@@ -52,16 +52,16 @@
   ( CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -81,14 +81,14 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkDeviceSize
   )
 
 
@@ -473,7 +473,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueryPool',
 -- 'VkQueryPoolCreateInfo'
-foreign import ccall "vkCreateQueryPool" vkCreateQueryPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateQueryPool" vkCreateQueryPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult
 -- | vkDestroyQueryPool - Destroy a query pool object
 --
 -- = Parameters
@@ -520,7 +524,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueryPool'
-foreign import ccall "vkDestroyQueryPool" vkDestroyQueryPool :: ("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyQueryPool" vkDestroyQueryPool :: ("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetQueryPoolResults - Copy results of queries in a query pool to a
 -- host memory region
 --
@@ -681,7 +689,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', @VkDeviceSize@,
 -- 'VkQueryPool', 'VkQueryResultFlags'
-foreign import ccall "vkGetQueryPoolResults" vkGetQueryPoolResults :: ("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetQueryPoolResults" vkGetQueryPoolResults :: ("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult
 -- | VkQueryPoolCreateInfo - Structure specifying parameters of a newly
 -- created query pool
 --
diff --git a/src/Graphics/Vulkan/Core10/Queue.hs b/src/Graphics/Vulkan/Core10/Queue.hs
--- a/src/Graphics/Vulkan/Core10/Queue.hs
+++ b/src/Graphics/Vulkan/Core10/Queue.hs
@@ -45,16 +45,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -74,8 +74,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -510,7 +510,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueue'
-foreign import ccall "vkGetDeviceQueue" vkGetDeviceQueue :: ("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceQueue" vkGetDeviceQueue :: ("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ()
 -- | vkQueueSubmit - Submits a sequence of semaphores or command buffers to a
 -- queue
 --
@@ -711,7 +715,11 @@
 -- = See Also
 --
 -- 'VkFence', 'VkQueue', 'VkSubmitInfo'
-foreign import ccall "vkQueueSubmit" vkQueueSubmit :: ("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueueSubmit" vkQueueSubmit :: ("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult
 -- | vkQueueWaitIdle - Wait for a queue to become idle
 --
 -- = Parameters
@@ -753,7 +761,11 @@
 -- = See Also
 --
 -- 'VkQueue'
-foreign import ccall "vkQueueWaitIdle" vkQueueWaitIdle :: ("queue" ::: VkQueue) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueueWaitIdle" vkQueueWaitIdle :: ("queue" ::: VkQueue) -> IO VkResult
 -- | vkDeviceWaitIdle - Wait for a device to become idle
 --
 -- = Parameters
@@ -789,7 +801,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDeviceWaitIdle" vkDeviceWaitIdle :: ("device" ::: VkDevice) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDeviceWaitIdle" vkDeviceWaitIdle :: ("device" ::: VkDevice) -> IO VkResult
 -- | VkSubmitInfo - Structure specifying a queue submit operation
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Core10/QueueSemaphore.hs b/src/Graphics/Vulkan/Core10/QueueSemaphore.hs
--- a/src/Graphics/Vulkan/Core10/QueueSemaphore.hs
+++ b/src/Graphics/Vulkan/Core10/QueueSemaphore.hs
@@ -18,16 +18,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -47,8 +47,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -139,7 +139,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', 'VkSemaphoreCreateInfo'
-foreign import ccall "vkCreateSemaphore" vkCreateSemaphore :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateSemaphore" vkCreateSemaphore :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult
 -- | vkDestroySemaphore - Destroy a semaphore object
 --
 -- = Parameters
@@ -187,7 +191,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore'
-foreign import ccall "vkDestroySemaphore" vkDestroySemaphore :: ("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroySemaphore" vkDestroySemaphore :: ("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkSemaphoreCreateInfo - Structure specifying parameters of a newly
 -- created semaphore
 --
diff --git a/src/Graphics/Vulkan/Core10/Sampler.hs b/src/Graphics/Vulkan/Core10/Sampler.hs
--- a/src/Graphics/Vulkan/Core10/Sampler.hs
+++ b/src/Graphics/Vulkan/Core10/Sampler.hs
@@ -43,16 +43,16 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -73,8 +73,8 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -399,7 +399,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSampler',
 -- 'VkSamplerCreateInfo'
-foreign import ccall "vkCreateSampler" vkCreateSampler :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateSampler" vkCreateSampler :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult
 -- | vkDestroySampler - Destroy a sampler object
 --
 -- = Parameters
@@ -446,7 +450,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSampler'
-foreign import ccall "vkDestroySampler" vkDestroySampler :: ("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroySampler" vkDestroySampler :: ("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkSamplerCreateInfo - Structure specifying parameters of a newly created
 -- sampler
 --
diff --git a/src/Graphics/Vulkan/Core10/Shader.hs b/src/Graphics/Vulkan/Core10/Shader.hs
--- a/src/Graphics/Vulkan/Core10/Shader.hs
+++ b/src/Graphics/Vulkan/Core10/Shader.hs
@@ -25,16 +25,16 @@
   ( CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -54,8 +54,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -162,7 +162,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkShaderModule', 'VkShaderModuleCreateInfo'
-foreign import ccall "vkCreateShaderModule" vkCreateShaderModule :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateShaderModule" vkCreateShaderModule :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult
 -- | vkDestroyShaderModule - Destroy a shader module module
 --
 -- = Parameters
@@ -211,7 +215,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkShaderModule'
-foreign import ccall "vkDestroyShaderModule" vkDestroyShaderModule :: ("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyShaderModule" vkDestroyShaderModule :: ("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkShaderModuleCreateInfo - Structure specifying parameters of a newly
 -- created shader module
 --
diff --git a/src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs b/src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs
--- a/src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs
+++ b/src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs
@@ -47,16 +47,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -76,21 +76,21 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
+  ( VkFormat(..)
   , VkResult(..)
-  , VkFormat(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkExtent3D(..)
-  , VkImageUsageFlagBits(..)
+  ( VkExtent3D(..)
   , VkImageTiling(..)
-  , VkImageUsageFlags
-  , VkSampleCountFlagBits(..)
   , VkImageType(..)
-  , VkPhysicalDevice
+  , VkImageUsageFlagBits(..)
+  , VkSampleCountFlagBits(..)
   , VkDevice
+  , VkDeviceSize
+  , VkImageUsageFlags
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.Memory
   ( VkDeviceMemory
@@ -100,9 +100,9 @@
   , VkImage
   )
 import Graphics.Vulkan.Core10.Queue
-  ( VkSemaphore
-  , VkFence
+  ( VkFence
   , VkQueue
+  , VkSemaphore
   )
 
 
@@ -306,7 +306,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',
 -- 'VkSparseImageMemoryRequirements'
-foreign import ccall "vkGetImageSparseMemoryRequirements" vkGetImageSparseMemoryRequirements :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetImageSparseMemoryRequirements" vkGetImageSparseMemoryRequirements :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ()
 -- | vkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of
 -- an image format applied to sparse images
 --
@@ -404,7 +408,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',
 -- 'VkSparseImageFormatProperties'
-foreign import ccall "vkGetPhysicalDeviceSparseImageFormatProperties" vkGetPhysicalDeviceSparseImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSparseImageFormatProperties" vkGetPhysicalDeviceSparseImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ()
 -- | vkQueueBindSparse - Bind device memory to a sparse resource object
 --
 -- = Parameters
@@ -531,7 +539,11 @@
 --
 -- 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.Queue.VkFence',
 -- 'Graphics.Vulkan.Core10.Queue.VkQueue'
-foreign import ccall "vkQueueBindSparse" vkQueueBindSparse :: ("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueueBindSparse" vkQueueBindSparse :: ("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult
 -- | VkOffset3D - Structure specifying a three-dimensional offset
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Core11.hs b/src/Graphics/Vulkan/Core11.hs
--- a/src/Graphics/Vulkan/Core11.hs
+++ b/src/Graphics/Vulkan/Core11.hs
@@ -3,7 +3,7 @@
 
 
 module Graphics.Vulkan.Core11
-  (     module Graphics.Vulkan.Core11.DeviceInitialization
+  ( module Graphics.Vulkan.Core11.DeviceInitialization
   , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup
   , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2
   , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage
diff --git a/src/Graphics/Vulkan/Core11/DeviceInitialization.hs b/src/Graphics/Vulkan/Core11/DeviceInitialization.hs
--- a/src/Graphics/Vulkan/Core11/DeviceInitialization.hs
+++ b/src/Graphics/Vulkan/Core11/DeviceInitialization.hs
@@ -46,4 +46,8 @@
 -- = See Also
 --
 -- No cross-references are available
-foreign import ccall "vkEnumerateInstanceVersion" vkEnumerateInstanceVersion :: ("pApiVersion" ::: Ptr Word32) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumerateInstanceVersion" vkEnumerateInstanceVersion :: ("pApiVersion" ::: Ptr Word32) -> IO VkResult
diff --git a/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs b/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs
@@ -27,12 +27,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -50,14 +50,14 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.Device
-  ( VkDeviceQueueCreateFlags
-  , VkDeviceQueueCreateFlagBits(..)
+  ( VkDeviceQueueCreateFlagBits(..)
+  , VkDeviceQueueCreateFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDevice
-  , VkImageCreateFlagBits(..)
+  ( VkImageCreateFlagBits(..)
   , VkMemoryPropertyFlagBits(..)
   , VkQueueFlagBits(..)
+  , VkDevice
   )
 import Graphics.Vulkan.Core10.Queue
   ( VkQueue
@@ -123,7 +123,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceQueueInfo2', 'Graphics.Vulkan.Core10.Queue.VkQueue'
-foreign import ccall "vkGetDeviceQueue2" vkGetDeviceQueue2 :: ("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceQueue2" vkGetDeviceQueue2 :: ("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ()
 -- | VkProtectedSubmitInfo - Structure indicating whether the submission is
 -- protected
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs b/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs
@@ -27,16 +27,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs
@@ -9,12 +9,12 @@
   ) where
 
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs
@@ -19,12 +19,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -36,16 +36,16 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
+  ( VkImageCreateFlagBits(..)
   , VkDevice
-  , VkImageCreateFlagBits(..)
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core10.Memory
   ( VkDeviceMemory
   )
 import Graphics.Vulkan.Core10.MemoryManagement
-  ( VkImage
-  , VkBuffer
+  ( VkBuffer
+  , VkImage
   )
 
 
@@ -97,7 +97,11 @@
 --
 -- 'VkBindBufferMemoryInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkBindBufferMemory2" vkBindBufferMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkBindBufferMemory2" vkBindBufferMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult
 -- | vkBindImageMemory2 - Bind device memory to image objects
 --
 -- = Parameters
@@ -137,7 +141,11 @@
 --
 -- 'VkBindImageMemoryInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkBindImageMemory2" vkBindImageMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkBindImageMemory2" vkBindImageMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult
 -- | VkBindBufferMemoryInfo - Structure specifying how to bind a buffer to
 -- memory
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs
@@ -11,12 +11,12 @@
   ) where
 
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs
@@ -34,16 +34,16 @@
   ( CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -63,8 +63,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkResult(..)
-  , VkObjectType(..)
+  ( VkObjectType(..)
+  , VkResult(..)
   , VkStructureType(..)
   , VkFlags
   )
@@ -223,7 +223,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDescriptorUpdateTemplate', 'VkDescriptorUpdateTemplateCreateInfo',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkCreateDescriptorUpdateTemplate" vkCreateDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDescriptorUpdateTemplate" vkCreateDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult
 -- | vkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template
 -- object
 --
@@ -273,7 +277,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDescriptorUpdateTemplate',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDestroyDescriptorUpdateTemplate" vkDestroyDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyDescriptorUpdateTemplate" vkDestroyDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor
 -- set object using an update template
 --
@@ -401,7 +409,11 @@
 -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',
 -- 'VkDescriptorUpdateTemplate',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkUpdateDescriptorSetWithTemplate" vkUpdateDescriptorSetWithTemplate :: ("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkUpdateDescriptorSetWithTemplate" vkUpdateDescriptorSetWithTemplate :: ("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ()
 -- | VkDescriptorUpdateTemplateEntry - Describes a single descriptor update
 -- of the descriptor update template
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs
@@ -42,16 +42,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -81,8 +81,8 @@
   ( VkDependencyFlagBits(..)
   )
 import Graphics.Vulkan.Core10.Pipeline
-  ( VkRect2D(..)
-  , VkPipelineCreateFlagBits(..)
+  ( VkPipelineCreateFlagBits(..)
+  , VkRect2D(..)
   )
 import Graphics.Vulkan.Core10.Queue
   ( VkCommandBuffer
@@ -270,7 +270,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkPeerMemoryFeatureFlags'
-foreign import ccall "vkGetDeviceGroupPeerMemoryFeatures" vkGetDeviceGroupPeerMemoryFeatures :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceGroupPeerMemoryFeatures" vkGetDeviceGroupPeerMemoryFeatures :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()
 -- | vkCmdSetDeviceMask - Modify device mask of a command buffer
 --
 -- = Parameters
@@ -333,7 +337,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdSetDeviceMask" vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetDeviceMask" vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()
 -- | vkCmdDispatchBase - Dispatch compute work items
 --
 -- = Parameters
@@ -433,7 +441,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdDispatchBase" vkCmdDispatchBase :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDispatchBase" vkCmdDispatchBase :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()
 -- | VkMemoryAllocateFlagsInfo - Structure controlling how many instances of
 -- memory will be allocated
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs
@@ -15,12 +15,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs
@@ -23,12 +23,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -41,9 +41,9 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDevice
+  ( VkMemoryHeapFlagBits(..)
   , VkInstance
-  , VkMemoryHeapFlagBits(..)
+  , VkPhysicalDevice
   )
 
 
@@ -128,7 +128,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'VkPhysicalDeviceGroupProperties'
-foreign import ccall "vkEnumeratePhysicalDeviceGroups" vkEnumeratePhysicalDeviceGroups :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkEnumeratePhysicalDeviceGroups" vkEnumeratePhysicalDeviceGroups :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult
 -- | VkPhysicalDeviceGroupProperties - Structure specifying physical device
 -- group properties
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs
@@ -17,16 +17,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs
@@ -29,16 +29,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -244,7 +244,11 @@
 -- 'VkExternalFenceProperties',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceExternalFenceInfo'
-foreign import ccall "vkGetPhysicalDeviceExternalFenceProperties" vkGetPhysicalDeviceExternalFenceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceExternalFenceProperties" vkGetPhysicalDeviceExternalFenceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ()
 -- | VkPhysicalDeviceExternalFenceInfo - Structure specifying fence creation
 -- parameters.
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs
@@ -18,18 +18,18 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities
   ( VkExternalMemoryHandleTypeFlags
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs
@@ -49,16 +49,16 @@
   , Word8
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -78,8 +78,8 @@
 
 
 import Graphics.Vulkan.Core10.Buffer
-  ( VkBufferUsageFlags
-  , VkBufferCreateFlags
+  ( VkBufferCreateFlags
+  , VkBufferUsageFlags
   )
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
@@ -424,7 +424,11 @@
 -- 'VkExternalBufferProperties',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceExternalBufferInfo'
-foreign import ccall "vkGetPhysicalDeviceExternalBufferProperties" vkGetPhysicalDeviceExternalBufferProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceExternalBufferProperties" vkGetPhysicalDeviceExternalBufferProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ()
 -- | VkExternalMemoryProperties - Structure specifying external memory handle
 -- type capabilities
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs
@@ -17,16 +17,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs
@@ -30,16 +30,16 @@
   , FiniteBits
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -269,7 +269,11 @@
 -- 'VkExternalSemaphoreProperties',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceExternalSemaphoreInfo'
-foreign import ccall "vkGetPhysicalDeviceExternalSemaphoreProperties" vkGetPhysicalDeviceExternalSemaphoreProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceExternalSemaphoreProperties" vkGetPhysicalDeviceExternalSemaphoreProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ()
 -- | VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore
 -- creation parameters.
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs
@@ -25,12 +25,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -45,8 +45,8 @@
   )
 import Graphics.Vulkan.Core10.MemoryManagement
   ( VkMemoryRequirements(..)
-  , VkImage
   , VkBuffer
+  , VkImage
   )
 import Graphics.Vulkan.Core10.SparseResourceMemoryManagement
   ( VkSparseImageMemoryRequirements(..)
@@ -98,7 +98,11 @@
 -- 'VkBufferMemoryRequirementsInfo2',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMemoryRequirements2'
-foreign import ccall "vkGetBufferMemoryRequirements2" vkGetBufferMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetBufferMemoryRequirements2" vkGetBufferMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()
 -- | vkGetImageMemoryRequirements2 - Returns the memory requirements for
 -- specified Vulkan object
 --
@@ -128,7 +132,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkImageMemoryRequirementsInfo2', 'VkMemoryRequirements2'
-foreign import ccall "vkGetImageMemoryRequirements2" vkGetImageMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetImageMemoryRequirements2" vkGetImageMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()
 -- | vkGetImageSparseMemoryRequirements2 - Query the memory requirements for
 -- a sparse image
 --
@@ -168,7 +176,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkImageSparseMemoryRequirementsInfo2',
 -- 'VkSparseImageMemoryRequirements2'
-foreign import ccall "vkGetImageSparseMemoryRequirements2" vkGetImageSparseMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetImageSparseMemoryRequirements2" vkGetImageSparseMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ()
 -- | VkBufferMemoryRequirementsInfo2 - (None)
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs
@@ -37,12 +37,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -50,22 +50,22 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkResult(..)
-  , VkFormat(..)
+  ( VkFormat(..)
+  , VkResult(..)
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkSampleCountFlagBits(..)
+  ( VkFormatProperties(..)
+  , VkImageFormatProperties(..)
+  , VkImageTiling(..)
+  , VkImageType(..)
+  , VkPhysicalDeviceFeatures(..)
   , VkPhysicalDeviceMemoryProperties(..)
+  , VkPhysicalDeviceProperties(..)
   , VkQueueFamilyProperties(..)
+  , VkSampleCountFlagBits(..)
   , VkImageCreateFlags
   , VkImageUsageFlags
-  , VkImageTiling(..)
-  , VkImageType(..)
-  , VkImageFormatProperties(..)
-  , VkFormatProperties(..)
-  , VkPhysicalDeviceProperties(..)
-  , VkPhysicalDeviceFeatures(..)
   , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.SparseResourceMemoryManagement
@@ -128,7 +128,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceFeatures2'
-foreign import ccall "vkGetPhysicalDeviceFeatures2" vkGetPhysicalDeviceFeatures2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceFeatures2" vkGetPhysicalDeviceFeatures2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ()
 -- | vkGetPhysicalDeviceProperties2 - Returns properties of a physical device
 --
 -- = Parameters
@@ -158,7 +162,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceProperties2'
-foreign import ccall "vkGetPhysicalDeviceProperties2" vkGetPhysicalDeviceProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceProperties2" vkGetPhysicalDeviceProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ()
 -- | vkGetPhysicalDeviceFormatProperties2 - Lists physical device’s format
 -- capabilities
 --
@@ -194,7 +202,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties2',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceFormatProperties2" vkGetPhysicalDeviceFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceFormatProperties2" vkGetPhysicalDeviceFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ()
 -- | vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device’s
 -- image format capabilities
 --
@@ -257,7 +269,11 @@
 -- 'VkImageFormatProperties2',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceImageFormatInfo2'
-foreign import ccall "vkGetPhysicalDeviceImageFormatProperties2" vkGetPhysicalDeviceImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceImageFormatProperties2" vkGetPhysicalDeviceImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult
 -- | vkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the
 -- queues of the specified physical device
 --
@@ -296,7 +312,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkQueueFamilyProperties2'
-foreign import ccall "vkGetPhysicalDeviceQueueFamilyProperties2" vkGetPhysicalDeviceQueueFamilyProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceQueueFamilyProperties2" vkGetPhysicalDeviceQueueFamilyProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ()
 -- | vkGetPhysicalDeviceMemoryProperties2 - Reports memory information for
 -- the specified physical device
 --
@@ -326,7 +346,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceMemoryProperties2'
-foreign import ccall "vkGetPhysicalDeviceMemoryProperties2" vkGetPhysicalDeviceMemoryProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceMemoryProperties2" vkGetPhysicalDeviceMemoryProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ()
 -- | vkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of
 -- an image format applied to sparse images
 --
@@ -371,7 +395,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceSparseImageFormatInfo2',
 -- 'VkSparseImageFormatProperties2'
-foreign import ccall "vkGetPhysicalDeviceSparseImageFormatProperties2" vkGetPhysicalDeviceSparseImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSparseImageFormatProperties2" vkGetPhysicalDeviceSparseImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ()
 -- | VkPhysicalDeviceFeatures2 - Structure describing the fine-grained
 -- features that can be supported by an implementation
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs
@@ -22,8 +22,8 @@
   ( Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -50,9 +50,9 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDevice
-  , VkFormatFeatureFlagBits(..)
+  ( VkFormatFeatureFlagBits(..)
   , VkImageCreateFlagBits(..)
+  , VkDevice
   )
 
 
@@ -171,4 +171,8 @@
 -- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',
 -- 'VkCommandPoolTrimFlags',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkTrimCommandPool" vkTrimCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkTrimCommandPool" vkTrimCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs
@@ -33,16 +33,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
@@ -62,8 +62,8 @@
   ( VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkImageUsageFlags
-  , VkImageCreateFlagBits(..)
+  ( VkImageCreateFlagBits(..)
+  , VkImageUsageFlags
   )
 import Graphics.Vulkan.Core10.Image
   ( VkImageLayout(..)
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs
@@ -17,12 +17,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -37,8 +37,8 @@
   ( VkDescriptorSetLayoutCreateInfo(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkDevice
+  ( VkDevice
+  , VkDeviceSize
   )
 
 
@@ -107,7 +107,11 @@
 -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo',
 -- 'VkDescriptorSetLayoutSupport',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkGetDescriptorSetLayoutSupport" vkGetDescriptorSetLayoutSupport :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDescriptorSetLayoutSupport" vkGetDescriptorSetLayoutSupport :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ()
 -- | VkPhysicalDeviceMaintenance3Properties - Structure describing descriptor
 -- set properties
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs
@@ -20,12 +20,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs
@@ -89,16 +89,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -119,16 +119,16 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkResult(..)
+  , VkFormat(..)
   , VkObjectType(..)
+  , VkResult(..)
   , VkStructureType(..)
-  , VkFormat(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
   ( VkAllocationCallbacks(..)
-  , VkDevice
   , VkFormatFeatureFlagBits(..)
   , VkImageCreateFlagBits(..)
+  , VkDevice
   )
 import Graphics.Vulkan.Core10.ImageView
   ( VkComponentMapping(..)
@@ -958,7 +958,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkSamplerYcbcrConversion', 'VkSamplerYcbcrConversionCreateInfo'
-foreign import ccall "vkCreateSamplerYcbcrConversion" vkCreateSamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateSamplerYcbcrConversion" vkCreateSamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult
 -- | vkDestroySamplerYcbcrConversion - Destroy a created Y’CbCr conversion
 --
 -- = Parameters
@@ -995,7 +999,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkSamplerYcbcrConversion'
-foreign import ccall "vkDestroySamplerYcbcrConversion" vkDestroySamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroySamplerYcbcrConversion" vkDestroySamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | VkSamplerYcbcrConversionInfo - Structure specifying Y’CbCr conversion to
 -- a sampler or image view
 --
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs
@@ -9,12 +9,12 @@
   ) where
 
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs
--- a/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs
+++ b/src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs
@@ -9,12 +9,12 @@
   ) where
 
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Dynamic.hs b/src/Graphics/Vulkan/Dynamic.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Vulkan/Dynamic.hs
@@ -0,0 +1,4490 @@
+{-# language Strict #-}
+{-# language CPP #-}
+{-# language CPP #-}
+{-# language ForeignFunctionInterface #-}
+{-# language MagicHash #-}
+{-# language DataKinds #-}
+{-# language TypeOperators #-}
+
+module Graphics.Vulkan.Dynamic
+  ( DeviceCmds(..)
+  , InstanceCmds(..)
+  , initDeviceCmds
+  , initInstanceCmds
+  , destroyInstance
+  , hasDestroyInstance
+  , enumeratePhysicalDevices
+  , hasEnumeratePhysicalDevices
+  , getDeviceProcAddr
+  , hasGetDeviceProcAddr
+  , getInstanceProcAddr
+  , hasGetInstanceProcAddr
+  , getPhysicalDeviceProperties
+  , hasGetPhysicalDeviceProperties
+  , getPhysicalDeviceQueueFamilyProperties
+  , hasGetPhysicalDeviceQueueFamilyProperties
+  , getPhysicalDeviceMemoryProperties
+  , hasGetPhysicalDeviceMemoryProperties
+  , getPhysicalDeviceFeatures
+  , hasGetPhysicalDeviceFeatures
+  , getPhysicalDeviceFormatProperties
+  , hasGetPhysicalDeviceFormatProperties
+  , getPhysicalDeviceImageFormatProperties
+  , hasGetPhysicalDeviceImageFormatProperties
+  , createDevice
+  , hasCreateDevice
+  , destroyDevice
+  , hasDestroyDevice
+  , enumerateDeviceLayerProperties
+  , hasEnumerateDeviceLayerProperties
+  , enumerateDeviceExtensionProperties
+  , hasEnumerateDeviceExtensionProperties
+  , getDeviceQueue
+  , hasGetDeviceQueue
+  , queueSubmit
+  , hasQueueSubmit
+  , queueWaitIdle
+  , hasQueueWaitIdle
+  , deviceWaitIdle
+  , hasDeviceWaitIdle
+  , allocateMemory
+  , hasAllocateMemory
+  , freeMemory
+  , hasFreeMemory
+  , mapMemory
+  , hasMapMemory
+  , unmapMemory
+  , hasUnmapMemory
+  , flushMappedMemoryRanges
+  , hasFlushMappedMemoryRanges
+  , invalidateMappedMemoryRanges
+  , hasInvalidateMappedMemoryRanges
+  , getDeviceMemoryCommitment
+  , hasGetDeviceMemoryCommitment
+  , getBufferMemoryRequirements
+  , hasGetBufferMemoryRequirements
+  , bindBufferMemory
+  , hasBindBufferMemory
+  , getImageMemoryRequirements
+  , hasGetImageMemoryRequirements
+  , bindImageMemory
+  , hasBindImageMemory
+  , getImageSparseMemoryRequirements
+  , hasGetImageSparseMemoryRequirements
+  , getPhysicalDeviceSparseImageFormatProperties
+  , hasGetPhysicalDeviceSparseImageFormatProperties
+  , queueBindSparse
+  , hasQueueBindSparse
+  , createFence
+  , hasCreateFence
+  , destroyFence
+  , hasDestroyFence
+  , resetFences
+  , hasResetFences
+  , getFenceStatus
+  , hasGetFenceStatus
+  , waitForFences
+  , hasWaitForFences
+  , createSemaphore
+  , hasCreateSemaphore
+  , destroySemaphore
+  , hasDestroySemaphore
+  , createEvent
+  , hasCreateEvent
+  , destroyEvent
+  , hasDestroyEvent
+  , getEventStatus
+  , hasGetEventStatus
+  , setEvent
+  , hasSetEvent
+  , resetEvent
+  , hasResetEvent
+  , createQueryPool
+  , hasCreateQueryPool
+  , destroyQueryPool
+  , hasDestroyQueryPool
+  , getQueryPoolResults
+  , hasGetQueryPoolResults
+  , createBuffer
+  , hasCreateBuffer
+  , destroyBuffer
+  , hasDestroyBuffer
+  , createBufferView
+  , hasCreateBufferView
+  , destroyBufferView
+  , hasDestroyBufferView
+  , createImage
+  , hasCreateImage
+  , destroyImage
+  , hasDestroyImage
+  , getImageSubresourceLayout
+  , hasGetImageSubresourceLayout
+  , createImageView
+  , hasCreateImageView
+  , destroyImageView
+  , hasDestroyImageView
+  , createShaderModule
+  , hasCreateShaderModule
+  , destroyShaderModule
+  , hasDestroyShaderModule
+  , createPipelineCache
+  , hasCreatePipelineCache
+  , destroyPipelineCache
+  , hasDestroyPipelineCache
+  , getPipelineCacheData
+  , hasGetPipelineCacheData
+  , mergePipelineCaches
+  , hasMergePipelineCaches
+  , createGraphicsPipelines
+  , hasCreateGraphicsPipelines
+  , createComputePipelines
+  , hasCreateComputePipelines
+  , destroyPipeline
+  , hasDestroyPipeline
+  , createPipelineLayout
+  , hasCreatePipelineLayout
+  , destroyPipelineLayout
+  , hasDestroyPipelineLayout
+  , createSampler
+  , hasCreateSampler
+  , destroySampler
+  , hasDestroySampler
+  , createDescriptorSetLayout
+  , hasCreateDescriptorSetLayout
+  , destroyDescriptorSetLayout
+  , hasDestroyDescriptorSetLayout
+  , createDescriptorPool
+  , hasCreateDescriptorPool
+  , destroyDescriptorPool
+  , hasDestroyDescriptorPool
+  , resetDescriptorPool
+  , hasResetDescriptorPool
+  , allocateDescriptorSets
+  , hasAllocateDescriptorSets
+  , freeDescriptorSets
+  , hasFreeDescriptorSets
+  , updateDescriptorSets
+  , hasUpdateDescriptorSets
+  , createFramebuffer
+  , hasCreateFramebuffer
+  , destroyFramebuffer
+  , hasDestroyFramebuffer
+  , createRenderPass
+  , hasCreateRenderPass
+  , destroyRenderPass
+  , hasDestroyRenderPass
+  , getRenderAreaGranularity
+  , hasGetRenderAreaGranularity
+  , createCommandPool
+  , hasCreateCommandPool
+  , destroyCommandPool
+  , hasDestroyCommandPool
+  , resetCommandPool
+  , hasResetCommandPool
+  , allocateCommandBuffers
+  , hasAllocateCommandBuffers
+  , freeCommandBuffers
+  , hasFreeCommandBuffers
+  , beginCommandBuffer
+  , hasBeginCommandBuffer
+  , endCommandBuffer
+  , hasEndCommandBuffer
+  , resetCommandBuffer
+  , hasResetCommandBuffer
+  , cmdBindPipeline
+  , hasCmdBindPipeline
+  , cmdSetViewport
+  , hasCmdSetViewport
+  , cmdSetScissor
+  , hasCmdSetScissor
+  , cmdSetLineWidth
+  , hasCmdSetLineWidth
+  , cmdSetDepthBias
+  , hasCmdSetDepthBias
+  , cmdSetBlendConstants
+  , hasCmdSetBlendConstants
+  , cmdSetDepthBounds
+  , hasCmdSetDepthBounds
+  , cmdSetStencilCompareMask
+  , hasCmdSetStencilCompareMask
+  , cmdSetStencilWriteMask
+  , hasCmdSetStencilWriteMask
+  , cmdSetStencilReference
+  , hasCmdSetStencilReference
+  , cmdBindDescriptorSets
+  , hasCmdBindDescriptorSets
+  , cmdBindIndexBuffer
+  , hasCmdBindIndexBuffer
+  , cmdBindVertexBuffers
+  , hasCmdBindVertexBuffers
+  , cmdDraw
+  , hasCmdDraw
+  , cmdDrawIndexed
+  , hasCmdDrawIndexed
+  , cmdDrawIndirect
+  , hasCmdDrawIndirect
+  , cmdDrawIndexedIndirect
+  , hasCmdDrawIndexedIndirect
+  , cmdDispatch
+  , hasCmdDispatch
+  , cmdDispatchIndirect
+  , hasCmdDispatchIndirect
+  , cmdCopyBuffer
+  , hasCmdCopyBuffer
+  , cmdCopyImage
+  , hasCmdCopyImage
+  , cmdBlitImage
+  , hasCmdBlitImage
+  , cmdCopyBufferToImage
+  , hasCmdCopyBufferToImage
+  , cmdCopyImageToBuffer
+  , hasCmdCopyImageToBuffer
+  , cmdUpdateBuffer
+  , hasCmdUpdateBuffer
+  , cmdFillBuffer
+  , hasCmdFillBuffer
+  , cmdClearColorImage
+  , hasCmdClearColorImage
+  , cmdClearDepthStencilImage
+  , hasCmdClearDepthStencilImage
+  , cmdClearAttachments
+  , hasCmdClearAttachments
+  , cmdResolveImage
+  , hasCmdResolveImage
+  , cmdSetEvent
+  , hasCmdSetEvent
+  , cmdResetEvent
+  , hasCmdResetEvent
+  , cmdWaitEvents
+  , hasCmdWaitEvents
+  , cmdPipelineBarrier
+  , hasCmdPipelineBarrier
+  , cmdBeginQuery
+  , hasCmdBeginQuery
+  , cmdEndQuery
+  , hasCmdEndQuery
+  , cmdResetQueryPool
+  , hasCmdResetQueryPool
+  , cmdWriteTimestamp
+  , hasCmdWriteTimestamp
+  , cmdCopyQueryPoolResults
+  , hasCmdCopyQueryPoolResults
+  , cmdPushConstants
+  , hasCmdPushConstants
+  , cmdBeginRenderPass
+  , hasCmdBeginRenderPass
+  , cmdNextSubpass
+  , hasCmdNextSubpass
+  , cmdEndRenderPass
+  , hasCmdEndRenderPass
+  , cmdExecuteCommands
+  , hasCmdExecuteCommands
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+  , createAndroidSurfaceKHR
+  , hasCreateAndroidSurfaceKHR
+#endif
+  , getPhysicalDeviceDisplayPropertiesKHR
+  , hasGetPhysicalDeviceDisplayPropertiesKHR
+  , getPhysicalDeviceDisplayPlanePropertiesKHR
+  , hasGetPhysicalDeviceDisplayPlanePropertiesKHR
+  , getDisplayPlaneSupportedDisplaysKHR
+  , hasGetDisplayPlaneSupportedDisplaysKHR
+  , getDisplayModePropertiesKHR
+  , hasGetDisplayModePropertiesKHR
+  , createDisplayModeKHR
+  , hasCreateDisplayModeKHR
+  , getDisplayPlaneCapabilitiesKHR
+  , hasGetDisplayPlaneCapabilitiesKHR
+  , createDisplayPlaneSurfaceKHR
+  , hasCreateDisplayPlaneSurfaceKHR
+  , createSharedSwapchainsKHR
+  , hasCreateSharedSwapchainsKHR
+#if defined(VK_USE_PLATFORM_MIR_KHR)
+  , createMirSurfaceKHR
+  , hasCreateMirSurfaceKHR
+  , getPhysicalDeviceMirPresentationSupportKHR
+  , hasGetPhysicalDeviceMirPresentationSupportKHR
+#endif
+  , destroySurfaceKHR
+  , hasDestroySurfaceKHR
+  , getPhysicalDeviceSurfaceSupportKHR
+  , hasGetPhysicalDeviceSurfaceSupportKHR
+  , getPhysicalDeviceSurfaceCapabilitiesKHR
+  , hasGetPhysicalDeviceSurfaceCapabilitiesKHR
+  , getPhysicalDeviceSurfaceFormatsKHR
+  , hasGetPhysicalDeviceSurfaceFormatsKHR
+  , getPhysicalDeviceSurfacePresentModesKHR
+  , hasGetPhysicalDeviceSurfacePresentModesKHR
+  , createSwapchainKHR
+  , hasCreateSwapchainKHR
+  , destroySwapchainKHR
+  , hasDestroySwapchainKHR
+  , getSwapchainImagesKHR
+  , hasGetSwapchainImagesKHR
+  , acquireNextImageKHR
+  , hasAcquireNextImageKHR
+  , queuePresentKHR
+  , hasQueuePresentKHR
+#if defined(VK_USE_PLATFORM_VI_NN)
+  , createViSurfaceNN
+  , hasCreateViSurfaceNN
+#endif
+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
+  , createWaylandSurfaceKHR
+  , hasCreateWaylandSurfaceKHR
+  , getPhysicalDeviceWaylandPresentationSupportKHR
+  , hasGetPhysicalDeviceWaylandPresentationSupportKHR
+#endif
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  , createWin32SurfaceKHR
+  , hasCreateWin32SurfaceKHR
+  , getPhysicalDeviceWin32PresentationSupportKHR
+  , hasGetPhysicalDeviceWin32PresentationSupportKHR
+#endif
+#if defined(VK_USE_PLATFORM_XLIB_KHR)
+  , createXlibSurfaceKHR
+  , hasCreateXlibSurfaceKHR
+  , getPhysicalDeviceXlibPresentationSupportKHR
+  , hasGetPhysicalDeviceXlibPresentationSupportKHR
+#endif
+#if defined(VK_USE_PLATFORM_XCB_KHR)
+  , createXcbSurfaceKHR
+  , hasCreateXcbSurfaceKHR
+  , getPhysicalDeviceXcbPresentationSupportKHR
+  , hasGetPhysicalDeviceXcbPresentationSupportKHR
+#endif
+  , createDebugReportCallbackEXT
+  , hasCreateDebugReportCallbackEXT
+  , destroyDebugReportCallbackEXT
+  , hasDestroyDebugReportCallbackEXT
+  , debugReportMessageEXT
+  , hasDebugReportMessageEXT
+  , debugMarkerSetObjectNameEXT
+  , hasDebugMarkerSetObjectNameEXT
+  , debugMarkerSetObjectTagEXT
+  , hasDebugMarkerSetObjectTagEXT
+  , cmdDebugMarkerBeginEXT
+  , hasCmdDebugMarkerBeginEXT
+  , cmdDebugMarkerEndEXT
+  , hasCmdDebugMarkerEndEXT
+  , cmdDebugMarkerInsertEXT
+  , hasCmdDebugMarkerInsertEXT
+  , getPhysicalDeviceExternalImageFormatPropertiesNV
+  , hasGetPhysicalDeviceExternalImageFormatPropertiesNV
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  , getMemoryWin32HandleNV
+  , hasGetMemoryWin32HandleNV
+#endif
+  , cmdDrawIndirectCountAMD
+  , hasCmdDrawIndirectCountAMD
+  , cmdDrawIndexedIndirectCountAMD
+  , hasCmdDrawIndexedIndirectCountAMD
+  , cmdProcessCommandsNVX
+  , hasCmdProcessCommandsNVX
+  , cmdReserveSpaceForCommandsNVX
+  , hasCmdReserveSpaceForCommandsNVX
+  , createIndirectCommandsLayoutNVX
+  , hasCreateIndirectCommandsLayoutNVX
+  , destroyIndirectCommandsLayoutNVX
+  , hasDestroyIndirectCommandsLayoutNVX
+  , createObjectTableNVX
+  , hasCreateObjectTableNVX
+  , destroyObjectTableNVX
+  , hasDestroyObjectTableNVX
+  , registerObjectsNVX
+  , hasRegisterObjectsNVX
+  , unregisterObjectsNVX
+  , hasUnregisterObjectsNVX
+  , getPhysicalDeviceGeneratedCommandsPropertiesNVX
+  , hasGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+  , getPhysicalDeviceFeatures2
+  , hasGetPhysicalDeviceFeatures2
+  , getPhysicalDeviceProperties2
+  , hasGetPhysicalDeviceProperties2
+  , getPhysicalDeviceFormatProperties2
+  , hasGetPhysicalDeviceFormatProperties2
+  , getPhysicalDeviceImageFormatProperties2
+  , hasGetPhysicalDeviceImageFormatProperties2
+  , getPhysicalDeviceQueueFamilyProperties2
+  , hasGetPhysicalDeviceQueueFamilyProperties2
+  , getPhysicalDeviceMemoryProperties2
+  , hasGetPhysicalDeviceMemoryProperties2
+  , getPhysicalDeviceSparseImageFormatProperties2
+  , hasGetPhysicalDeviceSparseImageFormatProperties2
+  , cmdPushDescriptorSetKHR
+  , hasCmdPushDescriptorSetKHR
+  , trimCommandPool
+  , hasTrimCommandPool
+  , getPhysicalDeviceExternalBufferProperties
+  , hasGetPhysicalDeviceExternalBufferProperties
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  , getMemoryWin32HandleKHR
+  , hasGetMemoryWin32HandleKHR
+  , getMemoryWin32HandlePropertiesKHR
+  , hasGetMemoryWin32HandlePropertiesKHR
+#endif
+  , getMemoryFdKHR
+  , hasGetMemoryFdKHR
+  , getMemoryFdPropertiesKHR
+  , hasGetMemoryFdPropertiesKHR
+  , getPhysicalDeviceExternalSemaphoreProperties
+  , hasGetPhysicalDeviceExternalSemaphoreProperties
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  , getSemaphoreWin32HandleKHR
+  , hasGetSemaphoreWin32HandleKHR
+  , importSemaphoreWin32HandleKHR
+  , hasImportSemaphoreWin32HandleKHR
+#endif
+  , getSemaphoreFdKHR
+  , hasGetSemaphoreFdKHR
+  , importSemaphoreFdKHR
+  , hasImportSemaphoreFdKHR
+  , getPhysicalDeviceExternalFenceProperties
+  , hasGetPhysicalDeviceExternalFenceProperties
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  , getFenceWin32HandleKHR
+  , hasGetFenceWin32HandleKHR
+  , importFenceWin32HandleKHR
+  , hasImportFenceWin32HandleKHR
+#endif
+  , getFenceFdKHR
+  , hasGetFenceFdKHR
+  , importFenceFdKHR
+  , hasImportFenceFdKHR
+  , releaseDisplayEXT
+  , hasReleaseDisplayEXT
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+  , acquireXlibDisplayEXT
+  , hasAcquireXlibDisplayEXT
+  , getRandROutputDisplayEXT
+  , hasGetRandROutputDisplayEXT
+#endif
+  , displayPowerControlEXT
+  , hasDisplayPowerControlEXT
+  , registerDeviceEventEXT
+  , hasRegisterDeviceEventEXT
+  , registerDisplayEventEXT
+  , hasRegisterDisplayEventEXT
+  , getSwapchainCounterEXT
+  , hasGetSwapchainCounterEXT
+  , getPhysicalDeviceSurfaceCapabilities2EXT
+  , hasGetPhysicalDeviceSurfaceCapabilities2EXT
+  , enumeratePhysicalDeviceGroups
+  , hasEnumeratePhysicalDeviceGroups
+  , getDeviceGroupPeerMemoryFeatures
+  , hasGetDeviceGroupPeerMemoryFeatures
+  , bindBufferMemory2
+  , hasBindBufferMemory2
+  , bindImageMemory2
+  , hasBindImageMemory2
+  , cmdSetDeviceMask
+  , hasCmdSetDeviceMask
+  , getDeviceGroupPresentCapabilitiesKHR
+  , hasGetDeviceGroupPresentCapabilitiesKHR
+  , getDeviceGroupSurfacePresentModesKHR
+  , hasGetDeviceGroupSurfacePresentModesKHR
+  , acquireNextImage2KHR
+  , hasAcquireNextImage2KHR
+  , cmdDispatchBase
+  , hasCmdDispatchBase
+  , getPhysicalDevicePresentRectanglesKHR
+  , hasGetPhysicalDevicePresentRectanglesKHR
+  , createDescriptorUpdateTemplate
+  , hasCreateDescriptorUpdateTemplate
+  , destroyDescriptorUpdateTemplate
+  , hasDestroyDescriptorUpdateTemplate
+  , updateDescriptorSetWithTemplate
+  , hasUpdateDescriptorSetWithTemplate
+  , cmdPushDescriptorSetWithTemplateKHR
+  , hasCmdPushDescriptorSetWithTemplateKHR
+  , setHdrMetadataEXT
+  , hasSetHdrMetadataEXT
+  , getSwapchainStatusKHR
+  , hasGetSwapchainStatusKHR
+  , getRefreshCycleDurationGOOGLE
+  , hasGetRefreshCycleDurationGOOGLE
+  , getPastPresentationTimingGOOGLE
+  , hasGetPastPresentationTimingGOOGLE
+#if defined(VK_USE_PLATFORM_IOS_MVK)
+  , createIOSSurfaceMVK
+  , hasCreateIOSSurfaceMVK
+#endif
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+  , createMacOSSurfaceMVK
+  , hasCreateMacOSSurfaceMVK
+#endif
+  , cmdSetViewportWScalingNV
+  , hasCmdSetViewportWScalingNV
+  , cmdSetDiscardRectangleEXT
+  , hasCmdSetDiscardRectangleEXT
+  , cmdSetSampleLocationsEXT
+  , hasCmdSetSampleLocationsEXT
+  , getPhysicalDeviceMultisamplePropertiesEXT
+  , hasGetPhysicalDeviceMultisamplePropertiesEXT
+  , getPhysicalDeviceSurfaceCapabilities2KHR
+  , hasGetPhysicalDeviceSurfaceCapabilities2KHR
+  , getPhysicalDeviceSurfaceFormats2KHR
+  , hasGetPhysicalDeviceSurfaceFormats2KHR
+  , getBufferMemoryRequirements2
+  , hasGetBufferMemoryRequirements2
+  , getImageMemoryRequirements2
+  , hasGetImageMemoryRequirements2
+  , getImageSparseMemoryRequirements2
+  , hasGetImageSparseMemoryRequirements2
+  , createSamplerYcbcrConversion
+  , hasCreateSamplerYcbcrConversion
+  , destroySamplerYcbcrConversion
+  , hasDestroySamplerYcbcrConversion
+  , getDeviceQueue2
+  , hasGetDeviceQueue2
+  , createValidationCacheEXT
+  , hasCreateValidationCacheEXT
+  , destroyValidationCacheEXT
+  , hasDestroyValidationCacheEXT
+  , getValidationCacheDataEXT
+  , hasGetValidationCacheDataEXT
+  , mergeValidationCachesEXT
+  , hasMergeValidationCachesEXT
+  , getDescriptorSetLayoutSupport
+  , hasGetDescriptorSetLayoutSupport
+  , getSwapchainGrallocUsageANDROID
+  , hasGetSwapchainGrallocUsageANDROID
+  , acquireImageANDROID
+  , hasAcquireImageANDROID
+  , queueSignalReleaseImageANDROID
+  , hasQueueSignalReleaseImageANDROID
+  , getShaderInfoAMD
+  , hasGetShaderInfoAMD
+  , setDebugUtilsObjectNameEXT
+  , hasSetDebugUtilsObjectNameEXT
+  , setDebugUtilsObjectTagEXT
+  , hasSetDebugUtilsObjectTagEXT
+  , queueBeginDebugUtilsLabelEXT
+  , hasQueueBeginDebugUtilsLabelEXT
+  , queueEndDebugUtilsLabelEXT
+  , hasQueueEndDebugUtilsLabelEXT
+  , queueInsertDebugUtilsLabelEXT
+  , hasQueueInsertDebugUtilsLabelEXT
+  , cmdBeginDebugUtilsLabelEXT
+  , hasCmdBeginDebugUtilsLabelEXT
+  , cmdEndDebugUtilsLabelEXT
+  , hasCmdEndDebugUtilsLabelEXT
+  , cmdInsertDebugUtilsLabelEXT
+  , hasCmdInsertDebugUtilsLabelEXT
+  , createDebugUtilsMessengerEXT
+  , hasCreateDebugUtilsMessengerEXT
+  , destroyDebugUtilsMessengerEXT
+  , hasDestroyDebugUtilsMessengerEXT
+  , submitDebugUtilsMessageEXT
+  , hasSubmitDebugUtilsMessageEXT
+  , getMemoryHostPointerPropertiesEXT
+  , hasGetMemoryHostPointerPropertiesEXT
+  , cmdWriteBufferMarkerAMD
+  , hasCmdWriteBufferMarkerAMD
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+  , getAndroidHardwareBufferPropertiesANDROID
+  , hasGetAndroidHardwareBufferPropertiesANDROID
+  , getMemoryAndroidHardwareBufferANDROID
+  , hasGetMemoryAndroidHardwareBufferANDROID
+#endif
+  ) where
+
+import Data.Int
+  ( Int32
+  )
+import Data.Word
+  ( Word32
+  , Word64
+  )
+import Foreign.C.Types
+  ( CChar(..)
+  , CFloat(..)
+  , CInt(..)
+  , CSize(..)
+  )
+import Foreign.Ptr
+  ( FunPtr
+  , Ptr
+  , castPtrToFunPtr
+  , nullFunPtr
+  )
+import Graphics.Vulkan.NamedType
+  ( (:::)
+  )
+import qualified GHC.Ptr
+  ( Ptr(..)
+  )
+
+
+import Graphics.Vulkan.Core10.Buffer
+  ( VkBufferCreateInfo(..)
+  )
+import Graphics.Vulkan.Core10.BufferView
+  ( VkBufferViewCreateInfo(..)
+  , VkBufferView
+  )
+import Graphics.Vulkan.Core10.CommandBuffer
+  ( VkCommandBufferAllocateInfo(..)
+  , VkCommandBufferBeginInfo(..)
+  , VkCommandBufferResetFlagBits(..)
+  , VkQueryControlFlagBits(..)
+  , VkCommandBufferResetFlags
+  , VkQueryControlFlags
+  )
+import Graphics.Vulkan.Core10.CommandBufferBuilding
+  ( VkBufferCopy(..)
+  , VkBufferImageCopy(..)
+  , VkBufferMemoryBarrier(..)
+  , VkClearAttachment(..)
+  , VkClearColorValue(..)
+  , VkClearDepthStencilValue(..)
+  , VkClearRect(..)
+  , VkImageBlit(..)
+  , VkImageCopy(..)
+  , VkImageMemoryBarrier(..)
+  , VkImageResolve(..)
+  , VkIndexType(..)
+  , VkMemoryBarrier(..)
+  , VkRenderPassBeginInfo(..)
+  , VkStencilFaceFlagBits(..)
+  , VkSubpassContents(..)
+  , VkStencilFaceFlags
+  )
+import Graphics.Vulkan.Core10.CommandPool
+  ( VkCommandPoolCreateInfo(..)
+  , VkCommandPoolResetFlagBits(..)
+  , VkCommandPool
+  , VkCommandPoolResetFlags
+  )
+import Graphics.Vulkan.Core10.Core
+  ( VkBool32(..)
+  , VkFormat(..)
+  , VkResult(..)
+  )
+import Graphics.Vulkan.Core10.DescriptorSet
+  ( VkCopyDescriptorSet(..)
+  , VkDescriptorPoolCreateInfo(..)
+  , VkDescriptorPoolResetFlags(..)
+  , VkDescriptorSetAllocateInfo(..)
+  , VkDescriptorSetLayoutCreateInfo(..)
+  , VkWriteDescriptorSet(..)
+  , VkDescriptorPool
+  , VkDescriptorSet
+  )
+import Graphics.Vulkan.Core10.Device
+  ( VkDeviceCreateInfo(..)
+  )
+import Graphics.Vulkan.Core10.DeviceInitialization
+  ( VkAllocationCallbacks(..)
+  , VkFormatProperties(..)
+  , VkImageCreateFlagBits(..)
+  , VkImageFormatProperties(..)
+  , VkImageTiling(..)
+  , VkImageType(..)
+  , VkImageUsageFlagBits(..)
+  , VkPhysicalDeviceFeatures(..)
+  , VkPhysicalDeviceMemoryProperties(..)
+  , VkPhysicalDeviceProperties(..)
+  , VkQueueFamilyProperties(..)
+  , VkSampleCountFlagBits(..)
+  , PFN_vkVoidFunction
+  , VkDevice
+  , VkDeviceSize
+  , VkImageCreateFlags
+  , VkImageUsageFlags
+  , VkInstance
+  , VkPhysicalDevice
+  , vkGetDeviceProcAddr
+  , vkGetInstanceProcAddr
+  )
+import Graphics.Vulkan.Core10.Event
+  ( VkEventCreateInfo(..)
+  , VkEvent
+  )
+import Graphics.Vulkan.Core10.ExtensionDiscovery
+  ( VkExtensionProperties(..)
+  )
+import Graphics.Vulkan.Core10.Fence
+  ( VkFenceCreateInfo(..)
+  )
+import Graphics.Vulkan.Core10.Image
+  ( VkImageCreateInfo(..)
+  , VkImageLayout(..)
+  , VkSubresourceLayout(..)
+  )
+import Graphics.Vulkan.Core10.ImageView
+  ( VkImageSubresourceRange(..)
+  , VkImageViewCreateInfo(..)
+  , VkImageView
+  )
+import Graphics.Vulkan.Core10.LayerDiscovery
+  ( VkLayerProperties(..)
+  )
+import Graphics.Vulkan.Core10.Memory
+  ( VkMappedMemoryRange(..)
+  , VkMemoryAllocateInfo(..)
+  , VkMemoryMapFlags(..)
+  , VkDeviceMemory
+  )
+import Graphics.Vulkan.Core10.MemoryManagement
+  ( VkMemoryRequirements(..)
+  , VkBuffer
+  , VkImage
+  )
+import Graphics.Vulkan.Core10.Pass
+  ( VkDependencyFlagBits(..)
+  , VkFramebufferCreateInfo(..)
+  , VkPipelineBindPoint(..)
+  , VkRenderPassCreateInfo(..)
+  , VkDependencyFlags
+  , VkFramebuffer
+  )
+import Graphics.Vulkan.Core10.Pipeline
+  ( VkComputePipelineCreateInfo(..)
+  , VkExtent2D(..)
+  , VkGraphicsPipelineCreateInfo(..)
+  , VkRect2D(..)
+  , VkShaderStageFlagBits(..)
+  , VkViewport(..)
+  , VkPipeline
+  , VkPipelineLayout
+  , VkRenderPass
+  )
+import Graphics.Vulkan.Core10.PipelineCache
+  ( VkPipelineCacheCreateInfo(..)
+  , VkPipelineCache
+  )
+import Graphics.Vulkan.Core10.PipelineLayout
+  ( VkPipelineLayoutCreateInfo(..)
+  , VkDescriptorSetLayout
+  , VkShaderStageFlags
+  )
+import Graphics.Vulkan.Core10.Query
+  ( VkQueryPoolCreateInfo(..)
+  , VkQueryResultFlagBits(..)
+  , VkQueryPool
+  , VkQueryResultFlags
+  )
+import Graphics.Vulkan.Core10.Queue
+  ( VkPipelineStageFlagBits(..)
+  , VkSubmitInfo(..)
+  , VkCommandBuffer
+  , VkFence
+  , VkPipelineStageFlags
+  , VkQueue
+  , VkSemaphore
+  )
+import Graphics.Vulkan.Core10.QueueSemaphore
+  ( VkSemaphoreCreateInfo(..)
+  )
+import Graphics.Vulkan.Core10.Sampler
+  ( VkFilter(..)
+  , VkSamplerCreateInfo(..)
+  , VkSampler
+  )
+import Graphics.Vulkan.Core10.Shader
+  ( VkShaderModuleCreateInfo(..)
+  , VkShaderModule
+  )
+import Graphics.Vulkan.Core10.SparseResourceMemoryManagement
+  ( VkBindSparseInfo(..)
+  , VkImageSubresource(..)
+  , VkSparseImageFormatProperties(..)
+  , VkSparseImageMemoryRequirements(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory
+  ( VkDeviceQueueInfo2(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2
+  ( VkBindBufferMemoryInfo(..)
+  , VkBindImageMemoryInfo(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template
+  ( VkDescriptorUpdateTemplateCreateInfo(..)
+  , VkDescriptorUpdateTemplate
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group
+  ( VkPeerMemoryFeatureFlags
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation
+  ( VkPhysicalDeviceGroupProperties(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities
+  ( VkExternalFenceProperties(..)
+  , VkPhysicalDeviceExternalFenceInfo(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities
+  ( VkExternalBufferProperties(..)
+  , VkExternalMemoryHandleTypeFlagBits(..)
+  , VkPhysicalDeviceExternalBufferInfo(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities
+  ( VkExternalSemaphoreProperties(..)
+  , VkPhysicalDeviceExternalSemaphoreInfo(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2
+  ( VkBufferMemoryRequirementsInfo2(..)
+  , VkImageMemoryRequirementsInfo2(..)
+  , VkImageSparseMemoryRequirementsInfo2(..)
+  , VkMemoryRequirements2(..)
+  , VkSparseImageMemoryRequirements2(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2
+  ( VkFormatProperties2(..)
+  , VkImageFormatProperties2(..)
+  , VkPhysicalDeviceFeatures2(..)
+  , VkPhysicalDeviceImageFormatInfo2(..)
+  , VkPhysicalDeviceMemoryProperties2(..)
+  , VkPhysicalDeviceProperties2(..)
+  , VkPhysicalDeviceSparseImageFormatInfo2(..)
+  , VkQueueFamilyProperties2(..)
+  , VkSparseImageFormatProperties2(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1
+  ( VkCommandPoolTrimFlags(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3
+  ( VkDescriptorSetLayoutSupport(..)
+  )
+import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion
+  ( VkSamplerYcbcrConversionCreateInfo(..)
+  , VkSamplerYcbcrConversion
+  )
+import Graphics.Vulkan.Extensions.VK_AMD_shader_info
+  ( VkShaderInfoTypeAMD(..)
+  )
+
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+import Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer
+  ( VkAndroidHardwareBufferPropertiesANDROID(..)
+  , VkMemoryGetAndroidHardwareBufferInfoANDROID(..)
+  , AHardwareBuffer
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+import Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display
+  ( RROutput
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_EXT_debug_marker
+  ( VkDebugMarkerMarkerInfoEXT(..)
+  , VkDebugMarkerObjectNameInfoEXT(..)
+  , VkDebugMarkerObjectTagInfoEXT(..)
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_debug_report
+  ( VkDebugReportCallbackCreateInfoEXT(..)
+  , VkDebugReportFlagBitsEXT(..)
+  , VkDebugReportObjectTypeEXT(..)
+  , VkDebugReportCallbackEXT
+  , VkDebugReportFlagsEXT
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_debug_utils
+  ( VkDebugUtilsLabelEXT(..)
+  , VkDebugUtilsMessageSeverityFlagBitsEXT(..)
+  , VkDebugUtilsMessageTypeFlagBitsEXT(..)
+  , VkDebugUtilsMessengerCallbackDataEXT(..)
+  , VkDebugUtilsMessengerCreateInfoEXT(..)
+  , VkDebugUtilsObjectNameInfoEXT(..)
+  , VkDebugUtilsObjectTagInfoEXT(..)
+  , VkDebugUtilsMessageTypeFlagsEXT
+  , VkDebugUtilsMessengerEXT
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_display_control
+  ( VkDeviceEventInfoEXT(..)
+  , VkDisplayEventInfoEXT(..)
+  , VkDisplayPowerInfoEXT(..)
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter
+  ( VkSurfaceCapabilities2EXT(..)
+  , VkSurfaceCounterFlagBitsEXT(..)
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_external_memory_host
+  ( VkMemoryHostPointerPropertiesEXT(..)
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata
+  ( VkHdrMetadataEXT(..)
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_sample_locations
+  ( VkMultisamplePropertiesEXT(..)
+  , VkSampleLocationsInfoEXT(..)
+  )
+import Graphics.Vulkan.Extensions.VK_EXT_validation_cache
+  ( VkValidationCacheCreateInfoEXT(..)
+  , VkValidationCacheEXT
+  )
+import Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing
+  ( VkPastPresentationTimingGOOGLE(..)
+  , VkRefreshCycleDurationGOOGLE(..)
+  )
+
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_android_surface
+  ( VkAndroidSurfaceCreateInfoKHR(..)
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_KHR_display
+  ( VkDisplayModeCreateInfoKHR(..)
+  , VkDisplayModePropertiesKHR(..)
+  , VkDisplayPlaneCapabilitiesKHR(..)
+  , VkDisplayPlanePropertiesKHR(..)
+  , VkDisplayPropertiesKHR(..)
+  , VkDisplaySurfaceCreateInfoKHR(..)
+  , VkDisplayKHR
+  , VkDisplayModeKHR
+  )
+import Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd
+  ( VkFenceGetFdInfoKHR(..)
+  , VkImportFenceFdInfoKHR(..)
+  )
+
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32
+  ( VkFenceGetWin32HandleInfoKHR(..)
+  , VkImportFenceWin32HandleInfoKHR(..)
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd
+  ( VkMemoryFdPropertiesKHR(..)
+  , VkMemoryGetFdInfoKHR(..)
+  )
+
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32
+  ( VkMemoryGetWin32HandleInfoKHR(..)
+  , VkMemoryWin32HandlePropertiesKHR(..)
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd
+  ( VkImportSemaphoreFdInfoKHR(..)
+  , VkSemaphoreGetFdInfoKHR(..)
+  )
+
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32
+  ( VkImportSemaphoreWin32HandleInfoKHR(..)
+  , VkSemaphoreGetWin32HandleInfoKHR(..)
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2
+  ( VkPhysicalDeviceSurfaceInfo2KHR(..)
+  , VkSurfaceCapabilities2KHR(..)
+  , VkSurfaceFormat2KHR(..)
+  )
+
+#if defined(VK_USE_PLATFORM_MIR_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_mir_surface
+  ( VkMirSurfaceCreateInfoKHR(..)
+  , MirConnection
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_KHR_surface
+  ( VkPresentModeKHR(..)
+  , VkSurfaceCapabilitiesKHR(..)
+  , VkSurfaceFormatKHR(..)
+  , VkSurfaceKHR
+  )
+import Graphics.Vulkan.Extensions.VK_KHR_swapchain
+  ( VkAcquireNextImageInfoKHR(..)
+  , VkDeviceGroupPresentCapabilitiesKHR(..)
+  , VkPresentInfoKHR(..)
+  , VkSwapchainCreateInfoKHR(..)
+  , VkDeviceGroupPresentModeFlagsKHR
+  , VkSwapchainKHR
+  )
+
+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_wayland_surface
+  ( VkWaylandSurfaceCreateInfoKHR(..)
+  , Wl_display
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_win32_surface
+  ( VkWin32SurfaceCreateInfoKHR(..)
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_XCB_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_xcb_surface
+  ( VkXcbSurfaceCreateInfoKHR(..)
+  , Xcb_connection_t
+  , Xcb_visualid_t
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_XLIB_KHR)
+import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface
+  ( Display(..)
+  , VkXlibSurfaceCreateInfoKHR(..)
+  , VisualID
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface
+  ( Display(..)
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_IOS_MVK)
+import Graphics.Vulkan.Extensions.VK_MVK_ios_surface
+  ( VkIOSSurfaceCreateInfoMVK(..)
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+import Graphics.Vulkan.Extensions.VK_MVK_macos_surface
+  ( VkMacOSSurfaceCreateInfoMVK(..)
+  )
+#endif
+
+#if defined(VK_USE_PLATFORM_VI_NN)
+import Graphics.Vulkan.Extensions.VK_NN_vi_surface
+  ( VkViSurfaceCreateInfoNN(..)
+  )
+#endif
+import Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands
+  ( VkCmdProcessCommandsInfoNVX(..)
+  , VkCmdReserveSpaceForCommandsInfoNVX(..)
+  , VkDeviceGeneratedCommandsFeaturesNVX(..)
+  , VkDeviceGeneratedCommandsLimitsNVX(..)
+  , VkIndirectCommandsLayoutCreateInfoNVX(..)
+  , VkObjectEntryTypeNVX(..)
+  , VkObjectTableCreateInfoNVX(..)
+  , VkObjectTableEntryNVX(..)
+  , VkIndirectCommandsLayoutNVX
+  , VkObjectTableNVX
+  )
+import Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling
+  ( VkViewportWScalingNV(..)
+  )
+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities
+  ( VkExternalImageFormatPropertiesNV(..)
+  , VkExternalMemoryHandleTypeFlagBitsNV(..)
+  , VkExternalMemoryHandleTypeFlagsNV
+  )
+
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32
+  ( HANDLE
+  )
+#endif
+
+
+data DeviceCmds = DeviceCmds
+  { pVkGetDeviceProcAddr :: FunPtr (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
+, pVkDestroyDevice :: FunPtr (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetDeviceQueue :: FunPtr (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ())
+, pVkQueueSubmit :: FunPtr (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult)
+, pVkQueueWaitIdle :: FunPtr (("queue" ::: VkQueue) -> IO VkResult)
+, pVkDeviceWaitIdle :: FunPtr (("device" ::: VkDevice) -> IO VkResult)
+, pVkAllocateMemory :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult)
+, pVkFreeMemory :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkMapMemory :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult)
+, pVkUnmapMemory :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ())
+, pVkFlushMappedMemoryRanges :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)
+, pVkInvalidateMappedMemoryRanges :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)
+, pVkGetDeviceMemoryCommitment :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ())
+, pVkGetBufferMemoryRequirements :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())
+, pVkBindBufferMemory :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)
+, pVkGetImageMemoryRequirements :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())
+, pVkBindImageMemory :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)
+, pVkGetImageSparseMemoryRequirements :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ())
+, pVkQueueBindSparse :: FunPtr (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult)
+, pVkCreateFence :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+, pVkDestroyFence :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkResetFences :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult)
+, pVkGetFenceStatus :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult)
+, pVkWaitForFences :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult)
+, pVkCreateSemaphore :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult)
+, pVkDestroySemaphore :: FunPtr (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateEvent :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult)
+, pVkDestroyEvent :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetEventStatus :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+, pVkSetEvent :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+, pVkResetEvent :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+, pVkCreateQueryPool :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult)
+, pVkDestroyQueryPool :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetQueryPoolResults :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult)
+, pVkCreateBuffer :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult)
+, pVkDestroyBuffer :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateBufferView :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult)
+, pVkDestroyBufferView :: FunPtr (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateImage :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult)
+, pVkDestroyImage :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetImageSubresourceLayout :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ())
+, pVkCreateImageView :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult)
+, pVkDestroyImageView :: FunPtr (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateShaderModule :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult)
+, pVkDestroyShaderModule :: FunPtr (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreatePipelineCache :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult)
+, pVkDestroyPipelineCache :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetPipelineCacheData :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)
+, pVkMergePipelineCaches :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult)
+, pVkCreateGraphicsPipelines :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)
+, pVkCreateComputePipelines :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)
+, pVkDestroyPipeline :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreatePipelineLayout :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult)
+, pVkDestroyPipelineLayout :: FunPtr (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateSampler :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult)
+, pVkDestroySampler :: FunPtr (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateDescriptorSetLayout :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult)
+, pVkDestroyDescriptorSetLayout :: FunPtr (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateDescriptorPool :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult)
+, pVkDestroyDescriptorPool :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkResetDescriptorPool :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult)
+, pVkAllocateDescriptorSets :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)
+, pVkFreeDescriptorSets :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)
+, pVkUpdateDescriptorSets :: FunPtr (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ())
+, pVkCreateFramebuffer :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult)
+, pVkDestroyFramebuffer :: FunPtr (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateRenderPass :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult)
+, pVkDestroyRenderPass :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetRenderAreaGranularity :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ())
+, pVkCreateCommandPool :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult)
+, pVkDestroyCommandPool :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkResetCommandPool :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult)
+, pVkAllocateCommandBuffers :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult)
+, pVkFreeCommandBuffers :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())
+, pVkBeginCommandBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult)
+, pVkEndCommandBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult)
+, pVkResetCommandBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult)
+, pVkCmdBindPipeline :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ())
+, pVkCmdSetViewport :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ())
+, pVkCmdSetScissor :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ())
+, pVkCmdSetLineWidth :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ())
+, pVkCmdSetDepthBias :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())
+, pVkCmdSetBlendConstants :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ())
+, pVkCmdSetDepthBounds :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())
+, pVkCmdSetStencilCompareMask :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())
+, pVkCmdSetStencilWriteMask :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())
+, pVkCmdSetStencilReference :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ())
+, pVkCmdBindDescriptorSets :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())
+, pVkCmdBindIndexBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ())
+, pVkCmdBindVertexBuffers :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ())
+, pVkCmdDraw :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())
+, pVkCmdDrawIndexed :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())
+, pVkCmdDrawIndirect :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+, pVkCmdDrawIndexedIndirect :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+, pVkCmdDispatch :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
+, pVkCmdDispatchIndirect :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ())
+, pVkCmdCopyBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ())
+, pVkCmdCopyImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ())
+, pVkCmdBlitImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ())
+, pVkCmdCopyBufferToImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())
+, pVkCmdCopyImageToBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())
+, pVkCmdUpdateBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
+, pVkCmdFillBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ())
+, pVkCmdClearColorImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())
+, pVkCmdClearDepthStencilImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())
+, pVkCmdClearAttachments :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ())
+, pVkCmdResolveImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ())
+, pVkCmdSetEvent :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())
+, pVkCmdResetEvent :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())
+, pVkCmdWaitEvents :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())
+, pVkCmdPipelineBarrier :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())
+, pVkCmdBeginQuery :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ())
+, pVkCmdEndQuery :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())
+, pVkCmdResetQueryPool :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())
+, pVkCmdWriteTimestamp :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())
+, pVkCmdCopyQueryPoolResults :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ())
+, pVkCmdPushConstants :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())
+, pVkCmdBeginRenderPass :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ())
+, pVkCmdNextSubpass :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ())
+, pVkCmdEndRenderPass :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+, pVkCmdExecuteCommands :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())
+, pVkCreateSharedSwapchainsKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult)
+, pVkCreateSwapchainKHR :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult)
+, pVkDestroySwapchainKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetSwapchainImagesKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult)
+, pVkAcquireNextImageKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)
+, pVkQueuePresentKHR :: FunPtr (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult)
+, pVkDebugMarkerSetObjectNameEXT :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult)
+, pVkDebugMarkerSetObjectTagEXT :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult)
+, pVkCmdDebugMarkerBeginEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())
+, pVkCmdDebugMarkerEndEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+, pVkCmdDebugMarkerInsertEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+, pVkGetMemoryWin32HandleNV :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+#endif
+, pVkCmdDrawIndirectCountAMD :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+, pVkCmdDrawIndexedIndirectCountAMD :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+, pVkCmdProcessCommandsNVX :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ())
+, pVkCmdReserveSpaceForCommandsNVX :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ())
+, pVkCreateIndirectCommandsLayoutNVX :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult)
+, pVkDestroyIndirectCommandsLayoutNVX :: FunPtr (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkCreateObjectTableNVX :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult)
+, pVkDestroyObjectTableNVX :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkRegisterObjectsNVX :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)
+, pVkUnregisterObjectsNVX :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)
+, pVkCmdPushDescriptorSetKHR :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ())
+, pVkTrimCommandPool :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ())
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+, pVkGetMemoryWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+, pVkGetMemoryWin32HandlePropertiesKHR :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult)
+#endif
+, pVkGetMemoryFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+, pVkGetMemoryFdPropertiesKHR :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+, pVkGetSemaphoreWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+, pVkImportSemaphoreWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult)
+#endif
+, pVkGetSemaphoreFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+, pVkImportSemaphoreFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+, pVkGetFenceWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+, pVkImportFenceWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult)
+#endif
+, pVkGetFenceFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+, pVkImportFenceFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult)
+, pVkDisplayPowerControlEXT :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult)
+, pVkRegisterDeviceEventEXT :: FunPtr (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+, pVkRegisterDisplayEventEXT :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+, pVkGetSwapchainCounterEXT :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult)
+, pVkGetDeviceGroupPeerMemoryFeatures :: FunPtr (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ())
+, pVkBindBufferMemory2 :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult)
+, pVkBindImageMemory2 :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult)
+, pVkCmdSetDeviceMask :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ())
+, pVkGetDeviceGroupPresentCapabilitiesKHR :: FunPtr (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult)
+, pVkGetDeviceGroupSurfacePresentModesKHR :: FunPtr (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult)
+, pVkAcquireNextImage2KHR :: FunPtr (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)
+, pVkCmdDispatchBase :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
+, pVkCreateDescriptorUpdateTemplate :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult)
+, pVkDestroyDescriptorUpdateTemplate :: FunPtr (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkUpdateDescriptorSetWithTemplate :: FunPtr (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ())
+, pVkCmdPushDescriptorSetWithTemplateKHR :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())
+, pVkSetHdrMetadataEXT :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ())
+, pVkGetSwapchainStatusKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult)
+, pVkGetRefreshCycleDurationGOOGLE :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult)
+, pVkGetPastPresentationTimingGOOGLE :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult)
+, pVkCmdSetViewportWScalingNV :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ())
+, pVkCmdSetDiscardRectangleEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ())
+, pVkCmdSetSampleLocationsEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ())
+, pVkGetBufferMemoryRequirements2 :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())
+, pVkGetImageMemoryRequirements2 :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())
+, pVkGetImageSparseMemoryRequirements2 :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ())
+, pVkCreateSamplerYcbcrConversion :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult)
+, pVkDestroySamplerYcbcrConversion :: FunPtr (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetDeviceQueue2 :: FunPtr (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ())
+, pVkCreateValidationCacheEXT :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult)
+, pVkDestroyValidationCacheEXT :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetValidationCacheDataEXT :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)
+, pVkMergeValidationCachesEXT :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult)
+, pVkGetDescriptorSetLayoutSupport :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ())
+, pVkGetSwapchainGrallocUsageANDROID :: FunPtr (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult)
+, pVkAcquireImageANDROID :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult)
+, pVkQueueSignalReleaseImageANDROID :: FunPtr (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult)
+, pVkGetShaderInfoAMD :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult)
+, pVkSetDebugUtilsObjectNameEXT :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult)
+, pVkSetDebugUtilsObjectTagEXT :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult)
+, pVkQueueBeginDebugUtilsLabelEXT :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+, pVkQueueEndDebugUtilsLabelEXT :: FunPtr (("queue" ::: VkQueue) -> IO ())
+, pVkQueueInsertDebugUtilsLabelEXT :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+, pVkCmdBeginDebugUtilsLabelEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+, pVkCmdEndDebugUtilsLabelEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+, pVkCmdInsertDebugUtilsLabelEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+, pVkGetMemoryHostPointerPropertiesEXT :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult)
+, pVkCmdWriteBufferMarkerAMD :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ())
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+, pVkGetAndroidHardwareBufferPropertiesANDROID :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult)
+, pVkGetMemoryAndroidHardwareBufferANDROID :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult)
+#endif
+  }
+  deriving (Show)
+
+data InstanceCmds = InstanceCmds
+  { pVkDestroyInstance :: FunPtr (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkEnumeratePhysicalDevices :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult)
+, pVkGetInstanceProcAddr :: FunPtr (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
+, pVkGetPhysicalDeviceProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ())
+, pVkGetPhysicalDeviceQueueFamilyProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ())
+, pVkGetPhysicalDeviceMemoryProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ())
+, pVkGetPhysicalDeviceFeatures :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ())
+, pVkGetPhysicalDeviceFormatProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ())
+, pVkGetPhysicalDeviceImageFormatProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult)
+, pVkCreateDevice :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult)
+, pVkEnumerateDeviceLayerProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult)
+, pVkEnumerateDeviceExtensionProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult)
+, pVkGetPhysicalDeviceSparseImageFormatProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ())
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+, pVkCreateAndroidSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+, pVkGetPhysicalDeviceDisplayPropertiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceDisplayPlanePropertiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult)
+, pVkGetDisplayPlaneSupportedDisplaysKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult)
+, pVkGetDisplayModePropertiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult)
+, pVkCreateDisplayModeKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult)
+, pVkGetDisplayPlaneCapabilitiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult)
+, pVkCreateDisplayPlaneSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_MIR_KHR)
+, pVkCreateMirSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceMirPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32)
+#endif
+, pVkDestroySurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkGetPhysicalDeviceSurfaceSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult)
+, pVkGetPhysicalDeviceSurfaceCapabilitiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceSurfaceFormatsKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceSurfacePresentModesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_VI_NN)
+, pVkCreateViSurfaceNN :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
+, pVkCreateWaylandSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceWaylandPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32)
+#endif
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+, pVkCreateWin32SurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceWin32PresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32)
+#endif
+#if defined(VK_USE_PLATFORM_XLIB_KHR)
+, pVkCreateXlibSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceXlibPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32)
+#endif
+#if defined(VK_USE_PLATFORM_XCB_KHR)
+, pVkCreateXcbSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+, pVkGetPhysicalDeviceXcbPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32)
+#endif
+, pVkCreateDebugReportCallbackEXT :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult)
+, pVkDestroyDebugReportCallbackEXT :: FunPtr (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkDebugReportMessageEXT :: FunPtr (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())
+, pVkGetPhysicalDeviceExternalImageFormatPropertiesNV :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult)
+, pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ())
+, pVkGetPhysicalDeviceFeatures2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ())
+, pVkGetPhysicalDeviceProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ())
+, pVkGetPhysicalDeviceFormatProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ())
+, pVkGetPhysicalDeviceImageFormatProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult)
+, pVkGetPhysicalDeviceQueueFamilyProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ())
+, pVkGetPhysicalDeviceMemoryProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ())
+, pVkGetPhysicalDeviceSparseImageFormatProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ())
+, pVkGetPhysicalDeviceExternalBufferProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ())
+, pVkGetPhysicalDeviceExternalSemaphoreProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ())
+, pVkGetPhysicalDeviceExternalFenceProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ())
+, pVkReleaseDisplayEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+, pVkAcquireXlibDisplayEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult)
+, pVkGetRandROutputDisplayEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult)
+#endif
+, pVkGetPhysicalDeviceSurfaceCapabilities2EXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult)
+, pVkEnumeratePhysicalDeviceGroups :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult)
+, pVkGetPhysicalDevicePresentRectanglesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_IOS_MVK)
+, pVkCreateIOSSurfaceMVK :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+, pVkCreateMacOSSurfaceMVK :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+, pVkGetPhysicalDeviceMultisamplePropertiesEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ())
+, pVkGetPhysicalDeviceSurfaceCapabilities2KHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult)
+, pVkGetPhysicalDeviceSurfaceFormats2KHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult)
+, pVkCreateDebugUtilsMessengerEXT :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult)
+, pVkDestroyDebugUtilsMessengerEXT :: FunPtr (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+, pVkSubmitDebugUtilsMessageEXT :: FunPtr (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ())
+  }
+  deriving (Show)
+
+initDeviceCmds :: VkDevice -> IO DeviceCmds
+initDeviceCmds handle = DeviceCmds
+  <$> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceProcAddr\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDevice\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceQueue\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueSubmit\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueWaitIdle\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDeviceWaitIdle\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAllocateMemory\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFreeMemory\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkMapMemory\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUnmapMemory\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFlushMappedMemoryRanges\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkInvalidateMappedMemoryRanges\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceMemoryCommitment\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetBufferMemoryRequirements\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindBufferMemory\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageMemoryRequirements\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindImageMemory\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageSparseMemoryRequirements\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueBindSparse\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateFence\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyFence\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetFences\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetFenceStatus\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkWaitForFences\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSemaphore\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySemaphore\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateEvent\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyEvent\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetEventStatus\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetEvent\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetEvent\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateQueryPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyQueryPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetQueryPoolResults\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateBufferView\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyBufferView\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageSubresourceLayout\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateImageView\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyImageView\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateShaderModule\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyShaderModule\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreatePipelineCache\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyPipelineCache\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetPipelineCacheData\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkMergePipelineCaches\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateGraphicsPipelines\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateComputePipelines\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyPipeline\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreatePipelineLayout\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyPipelineLayout\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSampler\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySampler\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateDescriptorSetLayout\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDescriptorSetLayout\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateDescriptorPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDescriptorPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetDescriptorPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAllocateDescriptorSets\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFreeDescriptorSets\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUpdateDescriptorSets\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateFramebuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyFramebuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateRenderPass\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyRenderPass\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetRenderAreaGranularity\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateCommandPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyCommandPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetCommandPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAllocateCommandBuffers\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFreeCommandBuffers\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBeginCommandBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkEndCommandBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetCommandBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindPipeline\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetViewport\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetScissor\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetLineWidth\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDepthBias\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetBlendConstants\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDepthBounds\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetStencilCompareMask\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetStencilWriteMask\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetStencilReference\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindDescriptorSets\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindIndexBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindVertexBuffers\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDraw\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndexed\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndirect\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndexedIndirect\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDispatch\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDispatchIndirect\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBlitImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyBufferToImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyImageToBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdUpdateBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdFillBuffer\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdClearColorImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdClearDepthStencilImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdClearAttachments\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdResolveImage\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetEvent\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdResetEvent\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdWaitEvents\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPipelineBarrier\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBeginQuery\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdEndQuery\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdResetQueryPool\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdWriteTimestamp\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyQueryPoolResults\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPushConstants\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBeginRenderPass\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdNextSubpass\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdEndRenderPass\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdExecuteCommands\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSharedSwapchainsKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSwapchainKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySwapchainKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainImagesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAcquireNextImageKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueuePresentKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDebugMarkerSetObjectNameEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDebugMarkerSetObjectTagEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDebugMarkerBeginEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDebugMarkerEndEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDebugMarkerInsertEXT\NUL"#))
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryWin32HandleNV\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndirectCountAMD\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndexedIndirectCountAMD\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdProcessCommandsNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdReserveSpaceForCommandsNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateIndirectCommandsLayoutNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyIndirectCommandsLayoutNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateObjectTableNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyObjectTableNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkRegisterObjectsNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUnregisterObjectsNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPushDescriptorSetKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkTrimCommandPool\NUL"#))
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryWin32HandleKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryWin32HandlePropertiesKHR\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryFdKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryFdPropertiesKHR\NUL"#))
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSemaphoreWin32HandleKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportSemaphoreWin32HandleKHR\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSemaphoreFdKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportSemaphoreFdKHR\NUL"#))
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetFenceWin32HandleKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportFenceWin32HandleKHR\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetFenceFdKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportFenceFdKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDisplayPowerControlEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkRegisterDeviceEventEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkRegisterDisplayEventEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainCounterEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindBufferMemory2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindImageMemory2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDeviceMask\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceGroupPresentCapabilitiesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceGroupSurfacePresentModesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAcquireNextImage2KHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDispatchBase\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateDescriptorUpdateTemplate\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPushDescriptorSetWithTemplateKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetHdrMetadataEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainStatusKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetRefreshCycleDurationGOOGLE\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetPastPresentationTimingGOOGLE\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetViewportWScalingNV\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDiscardRectangleEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetSampleLocationsEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetBufferMemoryRequirements2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageMemoryRequirements2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageSparseMemoryRequirements2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSamplerYcbcrConversion\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySamplerYcbcrConversion\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceQueue2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateValidationCacheEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyValidationCacheEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetValidationCacheDataEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkMergeValidationCachesEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDescriptorSetLayoutSupport\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainGrallocUsageANDROID\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAcquireImageANDROID\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueSignalReleaseImageANDROID\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetShaderInfoAMD\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetDebugUtilsObjectNameEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetDebugUtilsObjectTagEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueBeginDebugUtilsLabelEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueEndDebugUtilsLabelEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueInsertDebugUtilsLabelEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBeginDebugUtilsLabelEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdEndDebugUtilsLabelEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdInsertDebugUtilsLabelEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryHostPointerPropertiesEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdWriteBufferMarkerAMD\NUL"#))
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetAndroidHardwareBufferPropertiesANDROID\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryAndroidHardwareBufferANDROID\NUL"#))
+#endif
+
+initInstanceCmds :: VkInstance -> IO InstanceCmds
+initInstanceCmds handle = InstanceCmds
+  <$> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroyInstance\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumeratePhysicalDevices\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetInstanceProcAddr\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFeatures\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFormatProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDevice\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumerateDeviceLayerProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumerateDeviceExtensionProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"#))
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateAndroidSurfaceKHR\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceDisplayPropertiesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceDisplayPlanePropertiesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetDisplayPlaneSupportedDisplaysKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetDisplayModePropertiesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDisplayModeKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetDisplayPlaneCapabilitiesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDisplayPlaneSurfaceKHR\NUL"#))
+#if defined(VK_USE_PLATFORM_MIR_KHR)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateMirSurfaceKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMirPresentationSupportKHR\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroySurfaceKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceSupportKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceCapabilitiesKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceFormatsKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfacePresentModesKHR\NUL"#))
+#if defined(VK_USE_PLATFORM_VI_NN)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateViSurfaceNN\NUL"#))
+#endif
+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateWaylandSurfaceKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceWaylandPresentationSupportKHR\NUL"#))
+#endif
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateWin32SurfaceKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceWin32PresentationSupportKHR\NUL"#))
+#endif
+#if defined(VK_USE_PLATFORM_XLIB_KHR)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateXlibSurfaceKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceXlibPresentationSupportKHR\NUL"#))
+#endif
+#if defined(VK_USE_PLATFORM_XCB_KHR)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateXcbSurfaceKHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceXcbPresentationSupportKHR\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDebugReportCallbackEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDebugReportCallbackEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDebugReportMessageEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalImageFormatPropertiesNV\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFeatures2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceProperties2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkReleaseDisplayEXT\NUL"#))
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkAcquireXlibDisplayEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetRandROutputDisplayEXT\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceCapabilities2EXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDevicePresentRectanglesKHR\NUL"#))
+#if defined(VK_USE_PLATFORM_IOS_MVK)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateIOSSurfaceMVK\NUL"#))
+#endif
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateMacOSSurfaceMVK\NUL"#))
+#endif
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMultisamplePropertiesEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceCapabilities2KHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceFormats2KHR\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDebugUtilsMessengerEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDebugUtilsMessengerEXT\NUL"#))
+  <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkSubmitDebugUtilsMessageEXT\NUL"#))
+
+hasGetDeviceProcAddr :: DeviceCmds -> Bool
+hasGetDeviceProcAddr = (/= nullFunPtr) . pVkGetDeviceProcAddr
+hasDestroyDevice :: DeviceCmds -> Bool
+hasDestroyDevice = (/= nullFunPtr) . pVkDestroyDevice
+hasGetDeviceQueue :: DeviceCmds -> Bool
+hasGetDeviceQueue = (/= nullFunPtr) . pVkGetDeviceQueue
+hasQueueSubmit :: DeviceCmds -> Bool
+hasQueueSubmit = (/= nullFunPtr) . pVkQueueSubmit
+hasQueueWaitIdle :: DeviceCmds -> Bool
+hasQueueWaitIdle = (/= nullFunPtr) . pVkQueueWaitIdle
+hasDeviceWaitIdle :: DeviceCmds -> Bool
+hasDeviceWaitIdle = (/= nullFunPtr) . pVkDeviceWaitIdle
+hasAllocateMemory :: DeviceCmds -> Bool
+hasAllocateMemory = (/= nullFunPtr) . pVkAllocateMemory
+hasFreeMemory :: DeviceCmds -> Bool
+hasFreeMemory = (/= nullFunPtr) . pVkFreeMemory
+hasMapMemory :: DeviceCmds -> Bool
+hasMapMemory = (/= nullFunPtr) . pVkMapMemory
+hasUnmapMemory :: DeviceCmds -> Bool
+hasUnmapMemory = (/= nullFunPtr) . pVkUnmapMemory
+hasFlushMappedMemoryRanges :: DeviceCmds -> Bool
+hasFlushMappedMemoryRanges = (/= nullFunPtr) . pVkFlushMappedMemoryRanges
+hasInvalidateMappedMemoryRanges :: DeviceCmds -> Bool
+hasInvalidateMappedMemoryRanges = (/= nullFunPtr) . pVkInvalidateMappedMemoryRanges
+hasGetDeviceMemoryCommitment :: DeviceCmds -> Bool
+hasGetDeviceMemoryCommitment = (/= nullFunPtr) . pVkGetDeviceMemoryCommitment
+hasGetBufferMemoryRequirements :: DeviceCmds -> Bool
+hasGetBufferMemoryRequirements = (/= nullFunPtr) . pVkGetBufferMemoryRequirements
+hasBindBufferMemory :: DeviceCmds -> Bool
+hasBindBufferMemory = (/= nullFunPtr) . pVkBindBufferMemory
+hasGetImageMemoryRequirements :: DeviceCmds -> Bool
+hasGetImageMemoryRequirements = (/= nullFunPtr) . pVkGetImageMemoryRequirements
+hasBindImageMemory :: DeviceCmds -> Bool
+hasBindImageMemory = (/= nullFunPtr) . pVkBindImageMemory
+hasGetImageSparseMemoryRequirements :: DeviceCmds -> Bool
+hasGetImageSparseMemoryRequirements = (/= nullFunPtr) . pVkGetImageSparseMemoryRequirements
+hasQueueBindSparse :: DeviceCmds -> Bool
+hasQueueBindSparse = (/= nullFunPtr) . pVkQueueBindSparse
+hasCreateFence :: DeviceCmds -> Bool
+hasCreateFence = (/= nullFunPtr) . pVkCreateFence
+hasDestroyFence :: DeviceCmds -> Bool
+hasDestroyFence = (/= nullFunPtr) . pVkDestroyFence
+hasResetFences :: DeviceCmds -> Bool
+hasResetFences = (/= nullFunPtr) . pVkResetFences
+hasGetFenceStatus :: DeviceCmds -> Bool
+hasGetFenceStatus = (/= nullFunPtr) . pVkGetFenceStatus
+hasWaitForFences :: DeviceCmds -> Bool
+hasWaitForFences = (/= nullFunPtr) . pVkWaitForFences
+hasCreateSemaphore :: DeviceCmds -> Bool
+hasCreateSemaphore = (/= nullFunPtr) . pVkCreateSemaphore
+hasDestroySemaphore :: DeviceCmds -> Bool
+hasDestroySemaphore = (/= nullFunPtr) . pVkDestroySemaphore
+hasCreateEvent :: DeviceCmds -> Bool
+hasCreateEvent = (/= nullFunPtr) . pVkCreateEvent
+hasDestroyEvent :: DeviceCmds -> Bool
+hasDestroyEvent = (/= nullFunPtr) . pVkDestroyEvent
+hasGetEventStatus :: DeviceCmds -> Bool
+hasGetEventStatus = (/= nullFunPtr) . pVkGetEventStatus
+hasSetEvent :: DeviceCmds -> Bool
+hasSetEvent = (/= nullFunPtr) . pVkSetEvent
+hasResetEvent :: DeviceCmds -> Bool
+hasResetEvent = (/= nullFunPtr) . pVkResetEvent
+hasCreateQueryPool :: DeviceCmds -> Bool
+hasCreateQueryPool = (/= nullFunPtr) . pVkCreateQueryPool
+hasDestroyQueryPool :: DeviceCmds -> Bool
+hasDestroyQueryPool = (/= nullFunPtr) . pVkDestroyQueryPool
+hasGetQueryPoolResults :: DeviceCmds -> Bool
+hasGetQueryPoolResults = (/= nullFunPtr) . pVkGetQueryPoolResults
+hasCreateBuffer :: DeviceCmds -> Bool
+hasCreateBuffer = (/= nullFunPtr) . pVkCreateBuffer
+hasDestroyBuffer :: DeviceCmds -> Bool
+hasDestroyBuffer = (/= nullFunPtr) . pVkDestroyBuffer
+hasCreateBufferView :: DeviceCmds -> Bool
+hasCreateBufferView = (/= nullFunPtr) . pVkCreateBufferView
+hasDestroyBufferView :: DeviceCmds -> Bool
+hasDestroyBufferView = (/= nullFunPtr) . pVkDestroyBufferView
+hasCreateImage :: DeviceCmds -> Bool
+hasCreateImage = (/= nullFunPtr) . pVkCreateImage
+hasDestroyImage :: DeviceCmds -> Bool
+hasDestroyImage = (/= nullFunPtr) . pVkDestroyImage
+hasGetImageSubresourceLayout :: DeviceCmds -> Bool
+hasGetImageSubresourceLayout = (/= nullFunPtr) . pVkGetImageSubresourceLayout
+hasCreateImageView :: DeviceCmds -> Bool
+hasCreateImageView = (/= nullFunPtr) . pVkCreateImageView
+hasDestroyImageView :: DeviceCmds -> Bool
+hasDestroyImageView = (/= nullFunPtr) . pVkDestroyImageView
+hasCreateShaderModule :: DeviceCmds -> Bool
+hasCreateShaderModule = (/= nullFunPtr) . pVkCreateShaderModule
+hasDestroyShaderModule :: DeviceCmds -> Bool
+hasDestroyShaderModule = (/= nullFunPtr) . pVkDestroyShaderModule
+hasCreatePipelineCache :: DeviceCmds -> Bool
+hasCreatePipelineCache = (/= nullFunPtr) . pVkCreatePipelineCache
+hasDestroyPipelineCache :: DeviceCmds -> Bool
+hasDestroyPipelineCache = (/= nullFunPtr) . pVkDestroyPipelineCache
+hasGetPipelineCacheData :: DeviceCmds -> Bool
+hasGetPipelineCacheData = (/= nullFunPtr) . pVkGetPipelineCacheData
+hasMergePipelineCaches :: DeviceCmds -> Bool
+hasMergePipelineCaches = (/= nullFunPtr) . pVkMergePipelineCaches
+hasCreateGraphicsPipelines :: DeviceCmds -> Bool
+hasCreateGraphicsPipelines = (/= nullFunPtr) . pVkCreateGraphicsPipelines
+hasCreateComputePipelines :: DeviceCmds -> Bool
+hasCreateComputePipelines = (/= nullFunPtr) . pVkCreateComputePipelines
+hasDestroyPipeline :: DeviceCmds -> Bool
+hasDestroyPipeline = (/= nullFunPtr) . pVkDestroyPipeline
+hasCreatePipelineLayout :: DeviceCmds -> Bool
+hasCreatePipelineLayout = (/= nullFunPtr) . pVkCreatePipelineLayout
+hasDestroyPipelineLayout :: DeviceCmds -> Bool
+hasDestroyPipelineLayout = (/= nullFunPtr) . pVkDestroyPipelineLayout
+hasCreateSampler :: DeviceCmds -> Bool
+hasCreateSampler = (/= nullFunPtr) . pVkCreateSampler
+hasDestroySampler :: DeviceCmds -> Bool
+hasDestroySampler = (/= nullFunPtr) . pVkDestroySampler
+hasCreateDescriptorSetLayout :: DeviceCmds -> Bool
+hasCreateDescriptorSetLayout = (/= nullFunPtr) . pVkCreateDescriptorSetLayout
+hasDestroyDescriptorSetLayout :: DeviceCmds -> Bool
+hasDestroyDescriptorSetLayout = (/= nullFunPtr) . pVkDestroyDescriptorSetLayout
+hasCreateDescriptorPool :: DeviceCmds -> Bool
+hasCreateDescriptorPool = (/= nullFunPtr) . pVkCreateDescriptorPool
+hasDestroyDescriptorPool :: DeviceCmds -> Bool
+hasDestroyDescriptorPool = (/= nullFunPtr) . pVkDestroyDescriptorPool
+hasResetDescriptorPool :: DeviceCmds -> Bool
+hasResetDescriptorPool = (/= nullFunPtr) . pVkResetDescriptorPool
+hasAllocateDescriptorSets :: DeviceCmds -> Bool
+hasAllocateDescriptorSets = (/= nullFunPtr) . pVkAllocateDescriptorSets
+hasFreeDescriptorSets :: DeviceCmds -> Bool
+hasFreeDescriptorSets = (/= nullFunPtr) . pVkFreeDescriptorSets
+hasUpdateDescriptorSets :: DeviceCmds -> Bool
+hasUpdateDescriptorSets = (/= nullFunPtr) . pVkUpdateDescriptorSets
+hasCreateFramebuffer :: DeviceCmds -> Bool
+hasCreateFramebuffer = (/= nullFunPtr) . pVkCreateFramebuffer
+hasDestroyFramebuffer :: DeviceCmds -> Bool
+hasDestroyFramebuffer = (/= nullFunPtr) . pVkDestroyFramebuffer
+hasCreateRenderPass :: DeviceCmds -> Bool
+hasCreateRenderPass = (/= nullFunPtr) . pVkCreateRenderPass
+hasDestroyRenderPass :: DeviceCmds -> Bool
+hasDestroyRenderPass = (/= nullFunPtr) . pVkDestroyRenderPass
+hasGetRenderAreaGranularity :: DeviceCmds -> Bool
+hasGetRenderAreaGranularity = (/= nullFunPtr) . pVkGetRenderAreaGranularity
+hasCreateCommandPool :: DeviceCmds -> Bool
+hasCreateCommandPool = (/= nullFunPtr) . pVkCreateCommandPool
+hasDestroyCommandPool :: DeviceCmds -> Bool
+hasDestroyCommandPool = (/= nullFunPtr) . pVkDestroyCommandPool
+hasResetCommandPool :: DeviceCmds -> Bool
+hasResetCommandPool = (/= nullFunPtr) . pVkResetCommandPool
+hasAllocateCommandBuffers :: DeviceCmds -> Bool
+hasAllocateCommandBuffers = (/= nullFunPtr) . pVkAllocateCommandBuffers
+hasFreeCommandBuffers :: DeviceCmds -> Bool
+hasFreeCommandBuffers = (/= nullFunPtr) . pVkFreeCommandBuffers
+hasBeginCommandBuffer :: DeviceCmds -> Bool
+hasBeginCommandBuffer = (/= nullFunPtr) . pVkBeginCommandBuffer
+hasEndCommandBuffer :: DeviceCmds -> Bool
+hasEndCommandBuffer = (/= nullFunPtr) . pVkEndCommandBuffer
+hasResetCommandBuffer :: DeviceCmds -> Bool
+hasResetCommandBuffer = (/= nullFunPtr) . pVkResetCommandBuffer
+hasCmdBindPipeline :: DeviceCmds -> Bool
+hasCmdBindPipeline = (/= nullFunPtr) . pVkCmdBindPipeline
+hasCmdSetViewport :: DeviceCmds -> Bool
+hasCmdSetViewport = (/= nullFunPtr) . pVkCmdSetViewport
+hasCmdSetScissor :: DeviceCmds -> Bool
+hasCmdSetScissor = (/= nullFunPtr) . pVkCmdSetScissor
+hasCmdSetLineWidth :: DeviceCmds -> Bool
+hasCmdSetLineWidth = (/= nullFunPtr) . pVkCmdSetLineWidth
+hasCmdSetDepthBias :: DeviceCmds -> Bool
+hasCmdSetDepthBias = (/= nullFunPtr) . pVkCmdSetDepthBias
+hasCmdSetBlendConstants :: DeviceCmds -> Bool
+hasCmdSetBlendConstants = (/= nullFunPtr) . pVkCmdSetBlendConstants
+hasCmdSetDepthBounds :: DeviceCmds -> Bool
+hasCmdSetDepthBounds = (/= nullFunPtr) . pVkCmdSetDepthBounds
+hasCmdSetStencilCompareMask :: DeviceCmds -> Bool
+hasCmdSetStencilCompareMask = (/= nullFunPtr) . pVkCmdSetStencilCompareMask
+hasCmdSetStencilWriteMask :: DeviceCmds -> Bool
+hasCmdSetStencilWriteMask = (/= nullFunPtr) . pVkCmdSetStencilWriteMask
+hasCmdSetStencilReference :: DeviceCmds -> Bool
+hasCmdSetStencilReference = (/= nullFunPtr) . pVkCmdSetStencilReference
+hasCmdBindDescriptorSets :: DeviceCmds -> Bool
+hasCmdBindDescriptorSets = (/= nullFunPtr) . pVkCmdBindDescriptorSets
+hasCmdBindIndexBuffer :: DeviceCmds -> Bool
+hasCmdBindIndexBuffer = (/= nullFunPtr) . pVkCmdBindIndexBuffer
+hasCmdBindVertexBuffers :: DeviceCmds -> Bool
+hasCmdBindVertexBuffers = (/= nullFunPtr) . pVkCmdBindVertexBuffers
+hasCmdDraw :: DeviceCmds -> Bool
+hasCmdDraw = (/= nullFunPtr) . pVkCmdDraw
+hasCmdDrawIndexed :: DeviceCmds -> Bool
+hasCmdDrawIndexed = (/= nullFunPtr) . pVkCmdDrawIndexed
+hasCmdDrawIndirect :: DeviceCmds -> Bool
+hasCmdDrawIndirect = (/= nullFunPtr) . pVkCmdDrawIndirect
+hasCmdDrawIndexedIndirect :: DeviceCmds -> Bool
+hasCmdDrawIndexedIndirect = (/= nullFunPtr) . pVkCmdDrawIndexedIndirect
+hasCmdDispatch :: DeviceCmds -> Bool
+hasCmdDispatch = (/= nullFunPtr) . pVkCmdDispatch
+hasCmdDispatchIndirect :: DeviceCmds -> Bool
+hasCmdDispatchIndirect = (/= nullFunPtr) . pVkCmdDispatchIndirect
+hasCmdCopyBuffer :: DeviceCmds -> Bool
+hasCmdCopyBuffer = (/= nullFunPtr) . pVkCmdCopyBuffer
+hasCmdCopyImage :: DeviceCmds -> Bool
+hasCmdCopyImage = (/= nullFunPtr) . pVkCmdCopyImage
+hasCmdBlitImage :: DeviceCmds -> Bool
+hasCmdBlitImage = (/= nullFunPtr) . pVkCmdBlitImage
+hasCmdCopyBufferToImage :: DeviceCmds -> Bool
+hasCmdCopyBufferToImage = (/= nullFunPtr) . pVkCmdCopyBufferToImage
+hasCmdCopyImageToBuffer :: DeviceCmds -> Bool
+hasCmdCopyImageToBuffer = (/= nullFunPtr) . pVkCmdCopyImageToBuffer
+hasCmdUpdateBuffer :: DeviceCmds -> Bool
+hasCmdUpdateBuffer = (/= nullFunPtr) . pVkCmdUpdateBuffer
+hasCmdFillBuffer :: DeviceCmds -> Bool
+hasCmdFillBuffer = (/= nullFunPtr) . pVkCmdFillBuffer
+hasCmdClearColorImage :: DeviceCmds -> Bool
+hasCmdClearColorImage = (/= nullFunPtr) . pVkCmdClearColorImage
+hasCmdClearDepthStencilImage :: DeviceCmds -> Bool
+hasCmdClearDepthStencilImage = (/= nullFunPtr) . pVkCmdClearDepthStencilImage
+hasCmdClearAttachments :: DeviceCmds -> Bool
+hasCmdClearAttachments = (/= nullFunPtr) . pVkCmdClearAttachments
+hasCmdResolveImage :: DeviceCmds -> Bool
+hasCmdResolveImage = (/= nullFunPtr) . pVkCmdResolveImage
+hasCmdSetEvent :: DeviceCmds -> Bool
+hasCmdSetEvent = (/= nullFunPtr) . pVkCmdSetEvent
+hasCmdResetEvent :: DeviceCmds -> Bool
+hasCmdResetEvent = (/= nullFunPtr) . pVkCmdResetEvent
+hasCmdWaitEvents :: DeviceCmds -> Bool
+hasCmdWaitEvents = (/= nullFunPtr) . pVkCmdWaitEvents
+hasCmdPipelineBarrier :: DeviceCmds -> Bool
+hasCmdPipelineBarrier = (/= nullFunPtr) . pVkCmdPipelineBarrier
+hasCmdBeginQuery :: DeviceCmds -> Bool
+hasCmdBeginQuery = (/= nullFunPtr) . pVkCmdBeginQuery
+hasCmdEndQuery :: DeviceCmds -> Bool
+hasCmdEndQuery = (/= nullFunPtr) . pVkCmdEndQuery
+hasCmdResetQueryPool :: DeviceCmds -> Bool
+hasCmdResetQueryPool = (/= nullFunPtr) . pVkCmdResetQueryPool
+hasCmdWriteTimestamp :: DeviceCmds -> Bool
+hasCmdWriteTimestamp = (/= nullFunPtr) . pVkCmdWriteTimestamp
+hasCmdCopyQueryPoolResults :: DeviceCmds -> Bool
+hasCmdCopyQueryPoolResults = (/= nullFunPtr) . pVkCmdCopyQueryPoolResults
+hasCmdPushConstants :: DeviceCmds -> Bool
+hasCmdPushConstants = (/= nullFunPtr) . pVkCmdPushConstants
+hasCmdBeginRenderPass :: DeviceCmds -> Bool
+hasCmdBeginRenderPass = (/= nullFunPtr) . pVkCmdBeginRenderPass
+hasCmdNextSubpass :: DeviceCmds -> Bool
+hasCmdNextSubpass = (/= nullFunPtr) . pVkCmdNextSubpass
+hasCmdEndRenderPass :: DeviceCmds -> Bool
+hasCmdEndRenderPass = (/= nullFunPtr) . pVkCmdEndRenderPass
+hasCmdExecuteCommands :: DeviceCmds -> Bool
+hasCmdExecuteCommands = (/= nullFunPtr) . pVkCmdExecuteCommands
+hasCreateSharedSwapchainsKHR :: DeviceCmds -> Bool
+hasCreateSharedSwapchainsKHR = (/= nullFunPtr) . pVkCreateSharedSwapchainsKHR
+hasCreateSwapchainKHR :: DeviceCmds -> Bool
+hasCreateSwapchainKHR = (/= nullFunPtr) . pVkCreateSwapchainKHR
+hasDestroySwapchainKHR :: DeviceCmds -> Bool
+hasDestroySwapchainKHR = (/= nullFunPtr) . pVkDestroySwapchainKHR
+hasGetSwapchainImagesKHR :: DeviceCmds -> Bool
+hasGetSwapchainImagesKHR = (/= nullFunPtr) . pVkGetSwapchainImagesKHR
+hasAcquireNextImageKHR :: DeviceCmds -> Bool
+hasAcquireNextImageKHR = (/= nullFunPtr) . pVkAcquireNextImageKHR
+hasQueuePresentKHR :: DeviceCmds -> Bool
+hasQueuePresentKHR = (/= nullFunPtr) . pVkQueuePresentKHR
+hasDebugMarkerSetObjectNameEXT :: DeviceCmds -> Bool
+hasDebugMarkerSetObjectNameEXT = (/= nullFunPtr) . pVkDebugMarkerSetObjectNameEXT
+hasDebugMarkerSetObjectTagEXT :: DeviceCmds -> Bool
+hasDebugMarkerSetObjectTagEXT = (/= nullFunPtr) . pVkDebugMarkerSetObjectTagEXT
+hasCmdDebugMarkerBeginEXT :: DeviceCmds -> Bool
+hasCmdDebugMarkerBeginEXT = (/= nullFunPtr) . pVkCmdDebugMarkerBeginEXT
+hasCmdDebugMarkerEndEXT :: DeviceCmds -> Bool
+hasCmdDebugMarkerEndEXT = (/= nullFunPtr) . pVkCmdDebugMarkerEndEXT
+hasCmdDebugMarkerInsertEXT :: DeviceCmds -> Bool
+hasCmdDebugMarkerInsertEXT = (/= nullFunPtr) . pVkCmdDebugMarkerInsertEXT
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+hasGetMemoryWin32HandleNV :: DeviceCmds -> Bool
+hasGetMemoryWin32HandleNV = (/= nullFunPtr) . pVkGetMemoryWin32HandleNV
+#endif
+hasCmdDrawIndirectCountAMD :: DeviceCmds -> Bool
+hasCmdDrawIndirectCountAMD = (/= nullFunPtr) . pVkCmdDrawIndirectCountAMD
+hasCmdDrawIndexedIndirectCountAMD :: DeviceCmds -> Bool
+hasCmdDrawIndexedIndirectCountAMD = (/= nullFunPtr) . pVkCmdDrawIndexedIndirectCountAMD
+hasCmdProcessCommandsNVX :: DeviceCmds -> Bool
+hasCmdProcessCommandsNVX = (/= nullFunPtr) . pVkCmdProcessCommandsNVX
+hasCmdReserveSpaceForCommandsNVX :: DeviceCmds -> Bool
+hasCmdReserveSpaceForCommandsNVX = (/= nullFunPtr) . pVkCmdReserveSpaceForCommandsNVX
+hasCreateIndirectCommandsLayoutNVX :: DeviceCmds -> Bool
+hasCreateIndirectCommandsLayoutNVX = (/= nullFunPtr) . pVkCreateIndirectCommandsLayoutNVX
+hasDestroyIndirectCommandsLayoutNVX :: DeviceCmds -> Bool
+hasDestroyIndirectCommandsLayoutNVX = (/= nullFunPtr) . pVkDestroyIndirectCommandsLayoutNVX
+hasCreateObjectTableNVX :: DeviceCmds -> Bool
+hasCreateObjectTableNVX = (/= nullFunPtr) . pVkCreateObjectTableNVX
+hasDestroyObjectTableNVX :: DeviceCmds -> Bool
+hasDestroyObjectTableNVX = (/= nullFunPtr) . pVkDestroyObjectTableNVX
+hasRegisterObjectsNVX :: DeviceCmds -> Bool
+hasRegisterObjectsNVX = (/= nullFunPtr) . pVkRegisterObjectsNVX
+hasUnregisterObjectsNVX :: DeviceCmds -> Bool
+hasUnregisterObjectsNVX = (/= nullFunPtr) . pVkUnregisterObjectsNVX
+hasCmdPushDescriptorSetKHR :: DeviceCmds -> Bool
+hasCmdPushDescriptorSetKHR = (/= nullFunPtr) . pVkCmdPushDescriptorSetKHR
+hasTrimCommandPool :: DeviceCmds -> Bool
+hasTrimCommandPool = (/= nullFunPtr) . pVkTrimCommandPool
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+hasGetMemoryWin32HandleKHR :: DeviceCmds -> Bool
+hasGetMemoryWin32HandleKHR = (/= nullFunPtr) . pVkGetMemoryWin32HandleKHR
+hasGetMemoryWin32HandlePropertiesKHR :: DeviceCmds -> Bool
+hasGetMemoryWin32HandlePropertiesKHR = (/= nullFunPtr) . pVkGetMemoryWin32HandlePropertiesKHR
+#endif
+hasGetMemoryFdKHR :: DeviceCmds -> Bool
+hasGetMemoryFdKHR = (/= nullFunPtr) . pVkGetMemoryFdKHR
+hasGetMemoryFdPropertiesKHR :: DeviceCmds -> Bool
+hasGetMemoryFdPropertiesKHR = (/= nullFunPtr) . pVkGetMemoryFdPropertiesKHR
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+hasGetSemaphoreWin32HandleKHR :: DeviceCmds -> Bool
+hasGetSemaphoreWin32HandleKHR = (/= nullFunPtr) . pVkGetSemaphoreWin32HandleKHR
+hasImportSemaphoreWin32HandleKHR :: DeviceCmds -> Bool
+hasImportSemaphoreWin32HandleKHR = (/= nullFunPtr) . pVkImportSemaphoreWin32HandleKHR
+#endif
+hasGetSemaphoreFdKHR :: DeviceCmds -> Bool
+hasGetSemaphoreFdKHR = (/= nullFunPtr) . pVkGetSemaphoreFdKHR
+hasImportSemaphoreFdKHR :: DeviceCmds -> Bool
+hasImportSemaphoreFdKHR = (/= nullFunPtr) . pVkImportSemaphoreFdKHR
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+hasGetFenceWin32HandleKHR :: DeviceCmds -> Bool
+hasGetFenceWin32HandleKHR = (/= nullFunPtr) . pVkGetFenceWin32HandleKHR
+hasImportFenceWin32HandleKHR :: DeviceCmds -> Bool
+hasImportFenceWin32HandleKHR = (/= nullFunPtr) . pVkImportFenceWin32HandleKHR
+#endif
+hasGetFenceFdKHR :: DeviceCmds -> Bool
+hasGetFenceFdKHR = (/= nullFunPtr) . pVkGetFenceFdKHR
+hasImportFenceFdKHR :: DeviceCmds -> Bool
+hasImportFenceFdKHR = (/= nullFunPtr) . pVkImportFenceFdKHR
+hasDisplayPowerControlEXT :: DeviceCmds -> Bool
+hasDisplayPowerControlEXT = (/= nullFunPtr) . pVkDisplayPowerControlEXT
+hasRegisterDeviceEventEXT :: DeviceCmds -> Bool
+hasRegisterDeviceEventEXT = (/= nullFunPtr) . pVkRegisterDeviceEventEXT
+hasRegisterDisplayEventEXT :: DeviceCmds -> Bool
+hasRegisterDisplayEventEXT = (/= nullFunPtr) . pVkRegisterDisplayEventEXT
+hasGetSwapchainCounterEXT :: DeviceCmds -> Bool
+hasGetSwapchainCounterEXT = (/= nullFunPtr) . pVkGetSwapchainCounterEXT
+hasGetDeviceGroupPeerMemoryFeatures :: DeviceCmds -> Bool
+hasGetDeviceGroupPeerMemoryFeatures = (/= nullFunPtr) . pVkGetDeviceGroupPeerMemoryFeatures
+hasBindBufferMemory2 :: DeviceCmds -> Bool
+hasBindBufferMemory2 = (/= nullFunPtr) . pVkBindBufferMemory2
+hasBindImageMemory2 :: DeviceCmds -> Bool
+hasBindImageMemory2 = (/= nullFunPtr) . pVkBindImageMemory2
+hasCmdSetDeviceMask :: DeviceCmds -> Bool
+hasCmdSetDeviceMask = (/= nullFunPtr) . pVkCmdSetDeviceMask
+hasGetDeviceGroupPresentCapabilitiesKHR :: DeviceCmds -> Bool
+hasGetDeviceGroupPresentCapabilitiesKHR = (/= nullFunPtr) . pVkGetDeviceGroupPresentCapabilitiesKHR
+hasGetDeviceGroupSurfacePresentModesKHR :: DeviceCmds -> Bool
+hasGetDeviceGroupSurfacePresentModesKHR = (/= nullFunPtr) . pVkGetDeviceGroupSurfacePresentModesKHR
+hasAcquireNextImage2KHR :: DeviceCmds -> Bool
+hasAcquireNextImage2KHR = (/= nullFunPtr) . pVkAcquireNextImage2KHR
+hasCmdDispatchBase :: DeviceCmds -> Bool
+hasCmdDispatchBase = (/= nullFunPtr) . pVkCmdDispatchBase
+hasCreateDescriptorUpdateTemplate :: DeviceCmds -> Bool
+hasCreateDescriptorUpdateTemplate = (/= nullFunPtr) . pVkCreateDescriptorUpdateTemplate
+hasDestroyDescriptorUpdateTemplate :: DeviceCmds -> Bool
+hasDestroyDescriptorUpdateTemplate = (/= nullFunPtr) . pVkDestroyDescriptorUpdateTemplate
+hasUpdateDescriptorSetWithTemplate :: DeviceCmds -> Bool
+hasUpdateDescriptorSetWithTemplate = (/= nullFunPtr) . pVkUpdateDescriptorSetWithTemplate
+hasCmdPushDescriptorSetWithTemplateKHR :: DeviceCmds -> Bool
+hasCmdPushDescriptorSetWithTemplateKHR = (/= nullFunPtr) . pVkCmdPushDescriptorSetWithTemplateKHR
+hasSetHdrMetadataEXT :: DeviceCmds -> Bool
+hasSetHdrMetadataEXT = (/= nullFunPtr) . pVkSetHdrMetadataEXT
+hasGetSwapchainStatusKHR :: DeviceCmds -> Bool
+hasGetSwapchainStatusKHR = (/= nullFunPtr) . pVkGetSwapchainStatusKHR
+hasGetRefreshCycleDurationGOOGLE :: DeviceCmds -> Bool
+hasGetRefreshCycleDurationGOOGLE = (/= nullFunPtr) . pVkGetRefreshCycleDurationGOOGLE
+hasGetPastPresentationTimingGOOGLE :: DeviceCmds -> Bool
+hasGetPastPresentationTimingGOOGLE = (/= nullFunPtr) . pVkGetPastPresentationTimingGOOGLE
+hasCmdSetViewportWScalingNV :: DeviceCmds -> Bool
+hasCmdSetViewportWScalingNV = (/= nullFunPtr) . pVkCmdSetViewportWScalingNV
+hasCmdSetDiscardRectangleEXT :: DeviceCmds -> Bool
+hasCmdSetDiscardRectangleEXT = (/= nullFunPtr) . pVkCmdSetDiscardRectangleEXT
+hasCmdSetSampleLocationsEXT :: DeviceCmds -> Bool
+hasCmdSetSampleLocationsEXT = (/= nullFunPtr) . pVkCmdSetSampleLocationsEXT
+hasGetBufferMemoryRequirements2 :: DeviceCmds -> Bool
+hasGetBufferMemoryRequirements2 = (/= nullFunPtr) . pVkGetBufferMemoryRequirements2
+hasGetImageMemoryRequirements2 :: DeviceCmds -> Bool
+hasGetImageMemoryRequirements2 = (/= nullFunPtr) . pVkGetImageMemoryRequirements2
+hasGetImageSparseMemoryRequirements2 :: DeviceCmds -> Bool
+hasGetImageSparseMemoryRequirements2 = (/= nullFunPtr) . pVkGetImageSparseMemoryRequirements2
+hasCreateSamplerYcbcrConversion :: DeviceCmds -> Bool
+hasCreateSamplerYcbcrConversion = (/= nullFunPtr) . pVkCreateSamplerYcbcrConversion
+hasDestroySamplerYcbcrConversion :: DeviceCmds -> Bool
+hasDestroySamplerYcbcrConversion = (/= nullFunPtr) . pVkDestroySamplerYcbcrConversion
+hasGetDeviceQueue2 :: DeviceCmds -> Bool
+hasGetDeviceQueue2 = (/= nullFunPtr) . pVkGetDeviceQueue2
+hasCreateValidationCacheEXT :: DeviceCmds -> Bool
+hasCreateValidationCacheEXT = (/= nullFunPtr) . pVkCreateValidationCacheEXT
+hasDestroyValidationCacheEXT :: DeviceCmds -> Bool
+hasDestroyValidationCacheEXT = (/= nullFunPtr) . pVkDestroyValidationCacheEXT
+hasGetValidationCacheDataEXT :: DeviceCmds -> Bool
+hasGetValidationCacheDataEXT = (/= nullFunPtr) . pVkGetValidationCacheDataEXT
+hasMergeValidationCachesEXT :: DeviceCmds -> Bool
+hasMergeValidationCachesEXT = (/= nullFunPtr) . pVkMergeValidationCachesEXT
+hasGetDescriptorSetLayoutSupport :: DeviceCmds -> Bool
+hasGetDescriptorSetLayoutSupport = (/= nullFunPtr) . pVkGetDescriptorSetLayoutSupport
+hasGetSwapchainGrallocUsageANDROID :: DeviceCmds -> Bool
+hasGetSwapchainGrallocUsageANDROID = (/= nullFunPtr) . pVkGetSwapchainGrallocUsageANDROID
+hasAcquireImageANDROID :: DeviceCmds -> Bool
+hasAcquireImageANDROID = (/= nullFunPtr) . pVkAcquireImageANDROID
+hasQueueSignalReleaseImageANDROID :: DeviceCmds -> Bool
+hasQueueSignalReleaseImageANDROID = (/= nullFunPtr) . pVkQueueSignalReleaseImageANDROID
+hasGetShaderInfoAMD :: DeviceCmds -> Bool
+hasGetShaderInfoAMD = (/= nullFunPtr) . pVkGetShaderInfoAMD
+hasSetDebugUtilsObjectNameEXT :: DeviceCmds -> Bool
+hasSetDebugUtilsObjectNameEXT = (/= nullFunPtr) . pVkSetDebugUtilsObjectNameEXT
+hasSetDebugUtilsObjectTagEXT :: DeviceCmds -> Bool
+hasSetDebugUtilsObjectTagEXT = (/= nullFunPtr) . pVkSetDebugUtilsObjectTagEXT
+hasQueueBeginDebugUtilsLabelEXT :: DeviceCmds -> Bool
+hasQueueBeginDebugUtilsLabelEXT = (/= nullFunPtr) . pVkQueueBeginDebugUtilsLabelEXT
+hasQueueEndDebugUtilsLabelEXT :: DeviceCmds -> Bool
+hasQueueEndDebugUtilsLabelEXT = (/= nullFunPtr) . pVkQueueEndDebugUtilsLabelEXT
+hasQueueInsertDebugUtilsLabelEXT :: DeviceCmds -> Bool
+hasQueueInsertDebugUtilsLabelEXT = (/= nullFunPtr) . pVkQueueInsertDebugUtilsLabelEXT
+hasCmdBeginDebugUtilsLabelEXT :: DeviceCmds -> Bool
+hasCmdBeginDebugUtilsLabelEXT = (/= nullFunPtr) . pVkCmdBeginDebugUtilsLabelEXT
+hasCmdEndDebugUtilsLabelEXT :: DeviceCmds -> Bool
+hasCmdEndDebugUtilsLabelEXT = (/= nullFunPtr) . pVkCmdEndDebugUtilsLabelEXT
+hasCmdInsertDebugUtilsLabelEXT :: DeviceCmds -> Bool
+hasCmdInsertDebugUtilsLabelEXT = (/= nullFunPtr) . pVkCmdInsertDebugUtilsLabelEXT
+hasGetMemoryHostPointerPropertiesEXT :: DeviceCmds -> Bool
+hasGetMemoryHostPointerPropertiesEXT = (/= nullFunPtr) . pVkGetMemoryHostPointerPropertiesEXT
+hasCmdWriteBufferMarkerAMD :: DeviceCmds -> Bool
+hasCmdWriteBufferMarkerAMD = (/= nullFunPtr) . pVkCmdWriteBufferMarkerAMD
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+hasGetAndroidHardwareBufferPropertiesANDROID :: DeviceCmds -> Bool
+hasGetAndroidHardwareBufferPropertiesANDROID = (/= nullFunPtr) . pVkGetAndroidHardwareBufferPropertiesANDROID
+hasGetMemoryAndroidHardwareBufferANDROID :: DeviceCmds -> Bool
+hasGetMemoryAndroidHardwareBufferANDROID = (/= nullFunPtr) . pVkGetMemoryAndroidHardwareBufferANDROID
+#endif
+
+hasDestroyInstance :: InstanceCmds -> Bool
+hasDestroyInstance = (/= nullFunPtr) . pVkDestroyInstance
+hasEnumeratePhysicalDevices :: InstanceCmds -> Bool
+hasEnumeratePhysicalDevices = (/= nullFunPtr) . pVkEnumeratePhysicalDevices
+hasGetInstanceProcAddr :: InstanceCmds -> Bool
+hasGetInstanceProcAddr = (/= nullFunPtr) . pVkGetInstanceProcAddr
+hasGetPhysicalDeviceProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceProperties
+hasGetPhysicalDeviceQueueFamilyProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceQueueFamilyProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceQueueFamilyProperties
+hasGetPhysicalDeviceMemoryProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceMemoryProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceMemoryProperties
+hasGetPhysicalDeviceFeatures :: InstanceCmds -> Bool
+hasGetPhysicalDeviceFeatures = (/= nullFunPtr) . pVkGetPhysicalDeviceFeatures
+hasGetPhysicalDeviceFormatProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceFormatProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceFormatProperties
+hasGetPhysicalDeviceImageFormatProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceImageFormatProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceImageFormatProperties
+hasCreateDevice :: InstanceCmds -> Bool
+hasCreateDevice = (/= nullFunPtr) . pVkCreateDevice
+hasEnumerateDeviceLayerProperties :: InstanceCmds -> Bool
+hasEnumerateDeviceLayerProperties = (/= nullFunPtr) . pVkEnumerateDeviceLayerProperties
+hasEnumerateDeviceExtensionProperties :: InstanceCmds -> Bool
+hasEnumerateDeviceExtensionProperties = (/= nullFunPtr) . pVkEnumerateDeviceExtensionProperties
+hasGetPhysicalDeviceSparseImageFormatProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSparseImageFormatProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceSparseImageFormatProperties
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+hasCreateAndroidSurfaceKHR :: InstanceCmds -> Bool
+hasCreateAndroidSurfaceKHR = (/= nullFunPtr) . pVkCreateAndroidSurfaceKHR
+#endif
+hasGetPhysicalDeviceDisplayPropertiesKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceDisplayPropertiesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceDisplayPropertiesKHR
+hasGetPhysicalDeviceDisplayPlanePropertiesKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceDisplayPlanePropertiesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceDisplayPlanePropertiesKHR
+hasGetDisplayPlaneSupportedDisplaysKHR :: InstanceCmds -> Bool
+hasGetDisplayPlaneSupportedDisplaysKHR = (/= nullFunPtr) . pVkGetDisplayPlaneSupportedDisplaysKHR
+hasGetDisplayModePropertiesKHR :: InstanceCmds -> Bool
+hasGetDisplayModePropertiesKHR = (/= nullFunPtr) . pVkGetDisplayModePropertiesKHR
+hasCreateDisplayModeKHR :: InstanceCmds -> Bool
+hasCreateDisplayModeKHR = (/= nullFunPtr) . pVkCreateDisplayModeKHR
+hasGetDisplayPlaneCapabilitiesKHR :: InstanceCmds -> Bool
+hasGetDisplayPlaneCapabilitiesKHR = (/= nullFunPtr) . pVkGetDisplayPlaneCapabilitiesKHR
+hasCreateDisplayPlaneSurfaceKHR :: InstanceCmds -> Bool
+hasCreateDisplayPlaneSurfaceKHR = (/= nullFunPtr) . pVkCreateDisplayPlaneSurfaceKHR
+#if defined(VK_USE_PLATFORM_MIR_KHR)
+hasCreateMirSurfaceKHR :: InstanceCmds -> Bool
+hasCreateMirSurfaceKHR = (/= nullFunPtr) . pVkCreateMirSurfaceKHR
+hasGetPhysicalDeviceMirPresentationSupportKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceMirPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceMirPresentationSupportKHR
+#endif
+hasDestroySurfaceKHR :: InstanceCmds -> Bool
+hasDestroySurfaceKHR = (/= nullFunPtr) . pVkDestroySurfaceKHR
+hasGetPhysicalDeviceSurfaceSupportKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfaceSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceSupportKHR
+hasGetPhysicalDeviceSurfaceCapabilitiesKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfaceCapabilitiesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceCapabilitiesKHR
+hasGetPhysicalDeviceSurfaceFormatsKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfaceFormatsKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceFormatsKHR
+hasGetPhysicalDeviceSurfacePresentModesKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfacePresentModesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfacePresentModesKHR
+#if defined(VK_USE_PLATFORM_VI_NN)
+hasCreateViSurfaceNN :: InstanceCmds -> Bool
+hasCreateViSurfaceNN = (/= nullFunPtr) . pVkCreateViSurfaceNN
+#endif
+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
+hasCreateWaylandSurfaceKHR :: InstanceCmds -> Bool
+hasCreateWaylandSurfaceKHR = (/= nullFunPtr) . pVkCreateWaylandSurfaceKHR
+hasGetPhysicalDeviceWaylandPresentationSupportKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceWaylandPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceWaylandPresentationSupportKHR
+#endif
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+hasCreateWin32SurfaceKHR :: InstanceCmds -> Bool
+hasCreateWin32SurfaceKHR = (/= nullFunPtr) . pVkCreateWin32SurfaceKHR
+hasGetPhysicalDeviceWin32PresentationSupportKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceWin32PresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceWin32PresentationSupportKHR
+#endif
+#if defined(VK_USE_PLATFORM_XLIB_KHR)
+hasCreateXlibSurfaceKHR :: InstanceCmds -> Bool
+hasCreateXlibSurfaceKHR = (/= nullFunPtr) . pVkCreateXlibSurfaceKHR
+hasGetPhysicalDeviceXlibPresentationSupportKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceXlibPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceXlibPresentationSupportKHR
+#endif
+#if defined(VK_USE_PLATFORM_XCB_KHR)
+hasCreateXcbSurfaceKHR :: InstanceCmds -> Bool
+hasCreateXcbSurfaceKHR = (/= nullFunPtr) . pVkCreateXcbSurfaceKHR
+hasGetPhysicalDeviceXcbPresentationSupportKHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceXcbPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceXcbPresentationSupportKHR
+#endif
+hasCreateDebugReportCallbackEXT :: InstanceCmds -> Bool
+hasCreateDebugReportCallbackEXT = (/= nullFunPtr) . pVkCreateDebugReportCallbackEXT
+hasDestroyDebugReportCallbackEXT :: InstanceCmds -> Bool
+hasDestroyDebugReportCallbackEXT = (/= nullFunPtr) . pVkDestroyDebugReportCallbackEXT
+hasDebugReportMessageEXT :: InstanceCmds -> Bool
+hasDebugReportMessageEXT = (/= nullFunPtr) . pVkDebugReportMessageEXT
+hasGetPhysicalDeviceExternalImageFormatPropertiesNV :: InstanceCmds -> Bool
+hasGetPhysicalDeviceExternalImageFormatPropertiesNV = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalImageFormatPropertiesNV
+hasGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: InstanceCmds -> Bool
+hasGetPhysicalDeviceGeneratedCommandsPropertiesNVX = (/= nullFunPtr) . pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+hasGetPhysicalDeviceFeatures2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceFeatures2 = (/= nullFunPtr) . pVkGetPhysicalDeviceFeatures2
+hasGetPhysicalDeviceProperties2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceProperties2
+hasGetPhysicalDeviceFormatProperties2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceFormatProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceFormatProperties2
+hasGetPhysicalDeviceImageFormatProperties2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceImageFormatProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceImageFormatProperties2
+hasGetPhysicalDeviceQueueFamilyProperties2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceQueueFamilyProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceQueueFamilyProperties2
+hasGetPhysicalDeviceMemoryProperties2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceMemoryProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceMemoryProperties2
+hasGetPhysicalDeviceSparseImageFormatProperties2 :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSparseImageFormatProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceSparseImageFormatProperties2
+hasGetPhysicalDeviceExternalBufferProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceExternalBufferProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalBufferProperties
+hasGetPhysicalDeviceExternalSemaphoreProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceExternalSemaphoreProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalSemaphoreProperties
+hasGetPhysicalDeviceExternalFenceProperties :: InstanceCmds -> Bool
+hasGetPhysicalDeviceExternalFenceProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalFenceProperties
+hasReleaseDisplayEXT :: InstanceCmds -> Bool
+hasReleaseDisplayEXT = (/= nullFunPtr) . pVkReleaseDisplayEXT
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+hasAcquireXlibDisplayEXT :: InstanceCmds -> Bool
+hasAcquireXlibDisplayEXT = (/= nullFunPtr) . pVkAcquireXlibDisplayEXT
+hasGetRandROutputDisplayEXT :: InstanceCmds -> Bool
+hasGetRandROutputDisplayEXT = (/= nullFunPtr) . pVkGetRandROutputDisplayEXT
+#endif
+hasGetPhysicalDeviceSurfaceCapabilities2EXT :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfaceCapabilities2EXT = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceCapabilities2EXT
+hasEnumeratePhysicalDeviceGroups :: InstanceCmds -> Bool
+hasEnumeratePhysicalDeviceGroups = (/= nullFunPtr) . pVkEnumeratePhysicalDeviceGroups
+hasGetPhysicalDevicePresentRectanglesKHR :: InstanceCmds -> Bool
+hasGetPhysicalDevicePresentRectanglesKHR = (/= nullFunPtr) . pVkGetPhysicalDevicePresentRectanglesKHR
+#if defined(VK_USE_PLATFORM_IOS_MVK)
+hasCreateIOSSurfaceMVK :: InstanceCmds -> Bool
+hasCreateIOSSurfaceMVK = (/= nullFunPtr) . pVkCreateIOSSurfaceMVK
+#endif
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+hasCreateMacOSSurfaceMVK :: InstanceCmds -> Bool
+hasCreateMacOSSurfaceMVK = (/= nullFunPtr) . pVkCreateMacOSSurfaceMVK
+#endif
+hasGetPhysicalDeviceMultisamplePropertiesEXT :: InstanceCmds -> Bool
+hasGetPhysicalDeviceMultisamplePropertiesEXT = (/= nullFunPtr) . pVkGetPhysicalDeviceMultisamplePropertiesEXT
+hasGetPhysicalDeviceSurfaceCapabilities2KHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfaceCapabilities2KHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceCapabilities2KHR
+hasGetPhysicalDeviceSurfaceFormats2KHR :: InstanceCmds -> Bool
+hasGetPhysicalDeviceSurfaceFormats2KHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceFormats2KHR
+hasCreateDebugUtilsMessengerEXT :: InstanceCmds -> Bool
+hasCreateDebugUtilsMessengerEXT = (/= nullFunPtr) . pVkCreateDebugUtilsMessengerEXT
+hasDestroyDebugUtilsMessengerEXT :: InstanceCmds -> Bool
+hasDestroyDebugUtilsMessengerEXT = (/= nullFunPtr) . pVkDestroyDebugUtilsMessengerEXT
+hasSubmitDebugUtilsMessageEXT :: InstanceCmds -> Bool
+hasSubmitDebugUtilsMessageEXT = (/= nullFunPtr) . pVkSubmitDebugUtilsMessageEXT
+
+-- * Device commands
+getDeviceProcAddr :: DeviceCmds -> (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
+getDeviceProcAddr deviceCmds = mkVkGetDeviceProcAddr (pVkGetDeviceProcAddr deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceProcAddr
+  :: FunPtr (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) -> (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
+destroyDevice :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyDevice deviceCmds = mkVkDestroyDevice (pVkDestroyDevice deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDevice
+  :: FunPtr (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getDeviceQueue :: DeviceCmds -> (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ())
+getDeviceQueue deviceCmds = mkVkGetDeviceQueue (pVkGetDeviceQueue deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceQueue
+  :: FunPtr (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ()) -> (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ())
+queueSubmit :: DeviceCmds -> (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult)
+queueSubmit deviceCmds = mkVkQueueSubmit (pVkQueueSubmit deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueSubmit
+  :: FunPtr (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult)
+queueWaitIdle :: DeviceCmds -> (("queue" ::: VkQueue) -> IO VkResult)
+queueWaitIdle deviceCmds = mkVkQueueWaitIdle (pVkQueueWaitIdle deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueWaitIdle
+  :: FunPtr (("queue" ::: VkQueue) -> IO VkResult) -> (("queue" ::: VkQueue) -> IO VkResult)
+deviceWaitIdle :: DeviceCmds -> (("device" ::: VkDevice) -> IO VkResult)
+deviceWaitIdle deviceCmds = mkVkDeviceWaitIdle (pVkDeviceWaitIdle deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDeviceWaitIdle
+  :: FunPtr (("device" ::: VkDevice) -> IO VkResult) -> (("device" ::: VkDevice) -> IO VkResult)
+allocateMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult)
+allocateMemory deviceCmds = mkVkAllocateMemory (pVkAllocateMemory deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAllocateMemory
+  :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult)
+freeMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+freeMemory deviceCmds = mkVkFreeMemory (pVkFreeMemory deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkFreeMemory
+  :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+mapMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult)
+mapMemory deviceCmds = mkVkMapMemory (pVkMapMemory deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkMapMemory
+  :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult)
+unmapMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ())
+unmapMemory deviceCmds = mkVkUnmapMemory (pVkUnmapMemory deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUnmapMemory
+  :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ()) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ())
+flushMappedMemoryRanges :: DeviceCmds -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)
+flushMappedMemoryRanges deviceCmds = mkVkFlushMappedMemoryRanges (pVkFlushMappedMemoryRanges deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkFlushMappedMemoryRanges
+  :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)
+invalidateMappedMemoryRanges :: DeviceCmds -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)
+invalidateMappedMemoryRanges deviceCmds = mkVkInvalidateMappedMemoryRanges (pVkInvalidateMappedMemoryRanges deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkInvalidateMappedMemoryRanges
+  :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)
+getDeviceMemoryCommitment :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ())
+getDeviceMemoryCommitment deviceCmds = mkVkGetDeviceMemoryCommitment (pVkGetDeviceMemoryCommitment deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceMemoryCommitment
+  :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ()) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ())
+getBufferMemoryRequirements :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())
+getBufferMemoryRequirements deviceCmds = mkVkGetBufferMemoryRequirements (pVkGetBufferMemoryRequirements deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetBufferMemoryRequirements
+  :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()) -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())
+bindBufferMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)
+bindBufferMemory deviceCmds = mkVkBindBufferMemory (pVkBindBufferMemory deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindBufferMemory
+  :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult) -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)
+getImageMemoryRequirements :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())
+getImageMemoryRequirements deviceCmds = mkVkGetImageMemoryRequirements (pVkGetImageMemoryRequirements deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageMemoryRequirements
+  :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())
+bindImageMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)
+bindImageMemory deviceCmds = mkVkBindImageMemory (pVkBindImageMemory deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindImageMemory
+  :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)
+getImageSparseMemoryRequirements :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ())
+getImageSparseMemoryRequirements deviceCmds = mkVkGetImageSparseMemoryRequirements (pVkGetImageSparseMemoryRequirements deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageSparseMemoryRequirements
+  :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ())
+queueBindSparse :: DeviceCmds -> (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult)
+queueBindSparse deviceCmds = mkVkQueueBindSparse (pVkQueueBindSparse deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueBindSparse
+  :: FunPtr (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult)
+createFence :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+createFence deviceCmds = mkVkCreateFence (pVkCreateFence deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateFence
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+destroyFence :: DeviceCmds -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyFence deviceCmds = mkVkDestroyFence (pVkDestroyFence deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyFence
+  :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+resetFences :: DeviceCmds -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult)
+resetFences deviceCmds = mkVkResetFences (pVkResetFences deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkResetFences
+  :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult)
+getFenceStatus :: DeviceCmds -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult)
+getFenceStatus deviceCmds = mkVkGetFenceStatus (pVkGetFenceStatus deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetFenceStatus
+  :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult)
+waitForFences :: DeviceCmds -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult)
+waitForFences deviceCmds = mkVkWaitForFences (pVkWaitForFences deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkWaitForFences
+  :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult) -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult)
+createSemaphore :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult)
+createSemaphore deviceCmds = mkVkCreateSemaphore (pVkCreateSemaphore deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateSemaphore
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult)
+destroySemaphore :: DeviceCmds -> (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroySemaphore deviceCmds = mkVkDestroySemaphore (pVkDestroySemaphore deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroySemaphore
+  :: FunPtr (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult)
+createEvent deviceCmds = mkVkCreateEvent (pVkCreateEvent deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateEvent
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult)
+destroyEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyEvent deviceCmds = mkVkDestroyEvent (pVkDestroyEvent deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyEvent
+  :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getEventStatus :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+getEventStatus deviceCmds = mkVkGetEventStatus (pVkGetEventStatus deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetEventStatus
+  :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+setEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+setEvent deviceCmds = mkVkSetEvent (pVkSetEvent deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetEvent
+  :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+resetEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+resetEvent deviceCmds = mkVkResetEvent (pVkResetEvent deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkResetEvent
+  :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)
+createQueryPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult)
+createQueryPool deviceCmds = mkVkCreateQueryPool (pVkCreateQueryPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateQueryPool
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult)
+destroyQueryPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyQueryPool deviceCmds = mkVkDestroyQueryPool (pVkDestroyQueryPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyQueryPool
+  :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getQueryPoolResults :: DeviceCmds -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult)
+getQueryPoolResults deviceCmds = mkVkGetQueryPoolResults (pVkGetQueryPoolResults deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetQueryPoolResults
+  :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult) -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult)
+createBuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult)
+createBuffer deviceCmds = mkVkCreateBuffer (pVkCreateBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateBuffer
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult)
+destroyBuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyBuffer deviceCmds = mkVkDestroyBuffer (pVkDestroyBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyBuffer
+  :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createBufferView :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult)
+createBufferView deviceCmds = mkVkCreateBufferView (pVkCreateBufferView deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateBufferView
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult)
+destroyBufferView :: DeviceCmds -> (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyBufferView deviceCmds = mkVkDestroyBufferView (pVkDestroyBufferView deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyBufferView
+  :: FunPtr (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createImage :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult)
+createImage deviceCmds = mkVkCreateImage (pVkCreateImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateImage
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult)
+destroyImage :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyImage deviceCmds = mkVkDestroyImage (pVkDestroyImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyImage
+  :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getImageSubresourceLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ())
+getImageSubresourceLayout deviceCmds = mkVkGetImageSubresourceLayout (pVkGetImageSubresourceLayout deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageSubresourceLayout
+  :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ())
+createImageView :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult)
+createImageView deviceCmds = mkVkCreateImageView (pVkCreateImageView deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateImageView
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult)
+destroyImageView :: DeviceCmds -> (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyImageView deviceCmds = mkVkDestroyImageView (pVkDestroyImageView deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyImageView
+  :: FunPtr (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createShaderModule :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult)
+createShaderModule deviceCmds = mkVkCreateShaderModule (pVkCreateShaderModule deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateShaderModule
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult)
+destroyShaderModule :: DeviceCmds -> (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyShaderModule deviceCmds = mkVkDestroyShaderModule (pVkDestroyShaderModule deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyShaderModule
+  :: FunPtr (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createPipelineCache :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult)
+createPipelineCache deviceCmds = mkVkCreatePipelineCache (pVkCreatePipelineCache deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreatePipelineCache
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult)
+destroyPipelineCache :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyPipelineCache deviceCmds = mkVkDestroyPipelineCache (pVkDestroyPipelineCache deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyPipelineCache
+  :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getPipelineCacheData :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)
+getPipelineCacheData deviceCmds = mkVkGetPipelineCacheData (pVkGetPipelineCacheData deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPipelineCacheData
+  :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)
+mergePipelineCaches :: DeviceCmds -> (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult)
+mergePipelineCaches deviceCmds = mkVkMergePipelineCaches (pVkMergePipelineCaches deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkMergePipelineCaches
+  :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult) -> (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult)
+createGraphicsPipelines :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)
+createGraphicsPipelines deviceCmds = mkVkCreateGraphicsPipelines (pVkCreateGraphicsPipelines deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateGraphicsPipelines
+  :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)
+createComputePipelines :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)
+createComputePipelines deviceCmds = mkVkCreateComputePipelines (pVkCreateComputePipelines deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateComputePipelines
+  :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)
+destroyPipeline :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyPipeline deviceCmds = mkVkDestroyPipeline (pVkDestroyPipeline deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyPipeline
+  :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createPipelineLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult)
+createPipelineLayout deviceCmds = mkVkCreatePipelineLayout (pVkCreatePipelineLayout deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreatePipelineLayout
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult)
+destroyPipelineLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyPipelineLayout deviceCmds = mkVkDestroyPipelineLayout (pVkDestroyPipelineLayout deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyPipelineLayout
+  :: FunPtr (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createSampler :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult)
+createSampler deviceCmds = mkVkCreateSampler (pVkCreateSampler deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateSampler
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult)
+destroySampler :: DeviceCmds -> (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroySampler deviceCmds = mkVkDestroySampler (pVkDestroySampler deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroySampler
+  :: FunPtr (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createDescriptorSetLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult)
+createDescriptorSetLayout deviceCmds = mkVkCreateDescriptorSetLayout (pVkCreateDescriptorSetLayout deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDescriptorSetLayout
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult)
+destroyDescriptorSetLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyDescriptorSetLayout deviceCmds = mkVkDestroyDescriptorSetLayout (pVkDestroyDescriptorSetLayout deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDescriptorSetLayout
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createDescriptorPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult)
+createDescriptorPool deviceCmds = mkVkCreateDescriptorPool (pVkCreateDescriptorPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDescriptorPool
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult)
+destroyDescriptorPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyDescriptorPool deviceCmds = mkVkDestroyDescriptorPool (pVkDestroyDescriptorPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDescriptorPool
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+resetDescriptorPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult)
+resetDescriptorPool deviceCmds = mkVkResetDescriptorPool (pVkResetDescriptorPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkResetDescriptorPool
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult) -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult)
+allocateDescriptorSets :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)
+allocateDescriptorSets deviceCmds = mkVkAllocateDescriptorSets (pVkAllocateDescriptorSets deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAllocateDescriptorSets
+  :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)
+freeDescriptorSets :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)
+freeDescriptorSets deviceCmds = mkVkFreeDescriptorSets (pVkFreeDescriptorSets deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkFreeDescriptorSets
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult) -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)
+updateDescriptorSets :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ())
+updateDescriptorSets deviceCmds = mkVkUpdateDescriptorSets (pVkUpdateDescriptorSets deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUpdateDescriptorSets
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ())
+createFramebuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult)
+createFramebuffer deviceCmds = mkVkCreateFramebuffer (pVkCreateFramebuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateFramebuffer
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult)
+destroyFramebuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyFramebuffer deviceCmds = mkVkDestroyFramebuffer (pVkDestroyFramebuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyFramebuffer
+  :: FunPtr (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createRenderPass :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult)
+createRenderPass deviceCmds = mkVkCreateRenderPass (pVkCreateRenderPass deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateRenderPass
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult)
+destroyRenderPass :: DeviceCmds -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyRenderPass deviceCmds = mkVkDestroyRenderPass (pVkDestroyRenderPass deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyRenderPass
+  :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getRenderAreaGranularity :: DeviceCmds -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ())
+getRenderAreaGranularity deviceCmds = mkVkGetRenderAreaGranularity (pVkGetRenderAreaGranularity deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRenderAreaGranularity
+  :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ()) -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ())
+createCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult)
+createCommandPool deviceCmds = mkVkCreateCommandPool (pVkCreateCommandPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateCommandPool
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult)
+destroyCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyCommandPool deviceCmds = mkVkDestroyCommandPool (pVkDestroyCommandPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyCommandPool
+  :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+resetCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult)
+resetCommandPool deviceCmds = mkVkResetCommandPool (pVkResetCommandPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkResetCommandPool
+  :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult)
+allocateCommandBuffers :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult)
+allocateCommandBuffers deviceCmds = mkVkAllocateCommandBuffers (pVkAllocateCommandBuffers deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAllocateCommandBuffers
+  :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult)
+freeCommandBuffers :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())
+freeCommandBuffers deviceCmds = mkVkFreeCommandBuffers (pVkFreeCommandBuffers deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkFreeCommandBuffers
+  :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())
+beginCommandBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult)
+beginCommandBuffer deviceCmds = mkVkBeginCommandBuffer (pVkBeginCommandBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBeginCommandBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult)
+endCommandBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult)
+endCommandBuffer deviceCmds = mkVkEndCommandBuffer (pVkEndCommandBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEndCommandBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult) -> (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult)
+resetCommandBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult)
+resetCommandBuffer deviceCmds = mkVkResetCommandBuffer (pVkResetCommandBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkResetCommandBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult) -> (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult)
+cmdBindPipeline :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ())
+cmdBindPipeline deviceCmds = mkVkCmdBindPipeline (pVkCmdBindPipeline deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindPipeline
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ())
+cmdSetViewport :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ())
+cmdSetViewport deviceCmds = mkVkCmdSetViewport (pVkCmdSetViewport deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetViewport
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ())
+cmdSetScissor :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ())
+cmdSetScissor deviceCmds = mkVkCmdSetScissor (pVkCmdSetScissor deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetScissor
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ())
+cmdSetLineWidth :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ())
+cmdSetLineWidth deviceCmds = mkVkCmdSetLineWidth (pVkCmdSetLineWidth deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetLineWidth
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ())
+cmdSetDepthBias :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())
+cmdSetDepthBias deviceCmds = mkVkCmdSetDepthBias (pVkCmdSetDepthBias deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBias
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())
+cmdSetBlendConstants :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ())
+cmdSetBlendConstants deviceCmds = mkVkCmdSetBlendConstants (pVkCmdSetBlendConstants deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetBlendConstants
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ())
+cmdSetDepthBounds :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())
+cmdSetDepthBounds deviceCmds = mkVkCmdSetDepthBounds (pVkCmdSetDepthBounds deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBounds
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())
+cmdSetStencilCompareMask :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())
+cmdSetStencilCompareMask deviceCmds = mkVkCmdSetStencilCompareMask (pVkCmdSetStencilCompareMask deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilCompareMask
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())
+cmdSetStencilWriteMask :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())
+cmdSetStencilWriteMask deviceCmds = mkVkCmdSetStencilWriteMask (pVkCmdSetStencilWriteMask deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilWriteMask
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())
+cmdSetStencilReference :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ())
+cmdSetStencilReference deviceCmds = mkVkCmdSetStencilReference (pVkCmdSetStencilReference deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilReference
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ())
+cmdBindDescriptorSets :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())
+cmdBindDescriptorSets deviceCmds = mkVkCmdBindDescriptorSets (pVkCmdBindDescriptorSets deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindDescriptorSets
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())
+cmdBindIndexBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ())
+cmdBindIndexBuffer deviceCmds = mkVkCmdBindIndexBuffer (pVkCmdBindIndexBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindIndexBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ())
+cmdBindVertexBuffers :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ())
+cmdBindVertexBuffers deviceCmds = mkVkCmdBindVertexBuffers (pVkCmdBindVertexBuffers deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindVertexBuffers
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ())
+cmdDraw :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())
+cmdDraw deviceCmds = mkVkCmdDraw (pVkCmdDraw deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDraw
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())
+cmdDrawIndexed :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())
+cmdDrawIndexed deviceCmds = mkVkCmdDrawIndexed (pVkCmdDrawIndexed deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndexed
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())
+cmdDrawIndirect :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDrawIndirect deviceCmds = mkVkCmdDrawIndirect (pVkCmdDrawIndirect deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndirect
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDrawIndexedIndirect :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDrawIndexedIndirect deviceCmds = mkVkCmdDrawIndexedIndirect (pVkCmdDrawIndexedIndirect deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndexedIndirect
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDispatch :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
+cmdDispatch deviceCmds = mkVkCmdDispatch (pVkCmdDispatch deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatch
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
+cmdDispatchIndirect :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ())
+cmdDispatchIndirect deviceCmds = mkVkCmdDispatchIndirect (pVkCmdDispatchIndirect deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchIndirect
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ())
+cmdCopyBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ())
+cmdCopyBuffer deviceCmds = mkVkCmdCopyBuffer (pVkCmdCopyBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ())
+cmdCopyImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ())
+cmdCopyImage deviceCmds = mkVkCmdCopyImage (pVkCmdCopyImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyImage
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ())
+cmdBlitImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ())
+cmdBlitImage deviceCmds = mkVkCmdBlitImage (pVkCmdBlitImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBlitImage
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ())
+cmdCopyBufferToImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())
+cmdCopyBufferToImage deviceCmds = mkVkCmdCopyBufferToImage (pVkCmdCopyBufferToImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyBufferToImage
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())
+cmdCopyImageToBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())
+cmdCopyImageToBuffer deviceCmds = mkVkCmdCopyImageToBuffer (pVkCmdCopyImageToBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyImageToBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())
+cmdUpdateBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
+cmdUpdateBuffer deviceCmds = mkVkCmdUpdateBuffer (pVkCmdUpdateBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdUpdateBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
+cmdFillBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ())
+cmdFillBuffer deviceCmds = mkVkCmdFillBuffer (pVkCmdFillBuffer deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdFillBuffer
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ())
+cmdClearColorImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())
+cmdClearColorImage deviceCmds = mkVkCmdClearColorImage (pVkCmdClearColorImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdClearColorImage
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())
+cmdClearDepthStencilImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())
+cmdClearDepthStencilImage deviceCmds = mkVkCmdClearDepthStencilImage (pVkCmdClearDepthStencilImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdClearDepthStencilImage
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())
+cmdClearAttachments :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ())
+cmdClearAttachments deviceCmds = mkVkCmdClearAttachments (pVkCmdClearAttachments deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdClearAttachments
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ())
+cmdResolveImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ())
+cmdResolveImage deviceCmds = mkVkCmdResolveImage (pVkCmdResolveImage deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResolveImage
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ())
+cmdSetEvent :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())
+cmdSetEvent deviceCmds = mkVkCmdSetEvent (pVkCmdSetEvent deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetEvent
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())
+cmdResetEvent :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())
+cmdResetEvent deviceCmds = mkVkCmdResetEvent (pVkCmdResetEvent deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResetEvent
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())
+cmdWaitEvents :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())
+cmdWaitEvents deviceCmds = mkVkCmdWaitEvents (pVkCmdWaitEvents deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWaitEvents
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())
+cmdPipelineBarrier :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())
+cmdPipelineBarrier deviceCmds = mkVkCmdPipelineBarrier (pVkCmdPipelineBarrier deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPipelineBarrier
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())
+cmdBeginQuery :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ())
+cmdBeginQuery deviceCmds = mkVkCmdBeginQuery (pVkCmdBeginQuery deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginQuery
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ())
+cmdEndQuery :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())
+cmdEndQuery deviceCmds = mkVkCmdEndQuery (pVkCmdEndQuery deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndQuery
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())
+cmdResetQueryPool :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())
+cmdResetQueryPool deviceCmds = mkVkCmdResetQueryPool (pVkCmdResetQueryPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResetQueryPool
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())
+cmdWriteTimestamp :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())
+cmdWriteTimestamp deviceCmds = mkVkCmdWriteTimestamp (pVkCmdWriteTimestamp deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteTimestamp
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())
+cmdCopyQueryPoolResults :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ())
+cmdCopyQueryPoolResults deviceCmds = mkVkCmdCopyQueryPoolResults (pVkCmdCopyQueryPoolResults deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyQueryPoolResults
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ())
+cmdPushConstants :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())
+cmdPushConstants deviceCmds = mkVkCmdPushConstants (pVkCmdPushConstants deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushConstants
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())
+cmdBeginRenderPass :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ())
+cmdBeginRenderPass deviceCmds = mkVkCmdBeginRenderPass (pVkCmdBeginRenderPass deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginRenderPass
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ())
+cmdNextSubpass :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ())
+cmdNextSubpass deviceCmds = mkVkCmdNextSubpass (pVkCmdNextSubpass deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdNextSubpass
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ())
+cmdEndRenderPass :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+cmdEndRenderPass deviceCmds = mkVkCmdEndRenderPass (pVkCmdEndRenderPass deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndRenderPass
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+cmdExecuteCommands :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())
+cmdExecuteCommands deviceCmds = mkVkCmdExecuteCommands (pVkCmdExecuteCommands deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdExecuteCommands
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())
+createSharedSwapchainsKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult)
+createSharedSwapchainsKHR deviceCmds = mkVkCreateSharedSwapchainsKHR (pVkCreateSharedSwapchainsKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateSharedSwapchainsKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult)
+createSwapchainKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult)
+createSwapchainKHR deviceCmds = mkVkCreateSwapchainKHR (pVkCreateSwapchainKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateSwapchainKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult)
+destroySwapchainKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroySwapchainKHR deviceCmds = mkVkDestroySwapchainKHR (pVkDestroySwapchainKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroySwapchainKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getSwapchainImagesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult)
+getSwapchainImagesKHR deviceCmds = mkVkGetSwapchainImagesKHR (pVkGetSwapchainImagesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSwapchainImagesKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult)
+acquireNextImageKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)
+acquireNextImageKHR deviceCmds = mkVkAcquireNextImageKHR (pVkAcquireNextImageKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAcquireNextImageKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)
+queuePresentKHR :: DeviceCmds -> (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult)
+queuePresentKHR deviceCmds = mkVkQueuePresentKHR (pVkQueuePresentKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueuePresentKHR
+  :: FunPtr (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult)
+debugMarkerSetObjectNameEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult)
+debugMarkerSetObjectNameEXT deviceCmds = mkVkDebugMarkerSetObjectNameEXT (pVkDebugMarkerSetObjectNameEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDebugMarkerSetObjectNameEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult)
+debugMarkerSetObjectTagEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult)
+debugMarkerSetObjectTagEXT deviceCmds = mkVkDebugMarkerSetObjectTagEXT (pVkDebugMarkerSetObjectTagEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDebugMarkerSetObjectTagEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult)
+cmdDebugMarkerBeginEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())
+cmdDebugMarkerBeginEXT deviceCmds = mkVkCmdDebugMarkerBeginEXT (pVkCmdDebugMarkerBeginEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDebugMarkerBeginEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())
+cmdDebugMarkerEndEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+cmdDebugMarkerEndEXT deviceCmds = mkVkCmdDebugMarkerEndEXT (pVkCmdDebugMarkerEndEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDebugMarkerEndEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+cmdDebugMarkerInsertEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())
+cmdDebugMarkerInsertEXT deviceCmds = mkVkCmdDebugMarkerInsertEXT (pVkCmdDebugMarkerInsertEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDebugMarkerInsertEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+getMemoryWin32HandleNV :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+getMemoryWin32HandleNV deviceCmds = mkVkGetMemoryWin32HandleNV (pVkGetMemoryWin32HandleNV deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryWin32HandleNV
+  :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+#endif
+cmdDrawIndirectCountAMD :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDrawIndirectCountAMD deviceCmds = mkVkCmdDrawIndirectCountAMD (pVkCmdDrawIndirectCountAMD deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndirectCountAMD
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDrawIndexedIndirectCountAMD :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdDrawIndexedIndirectCountAMD deviceCmds = mkVkCmdDrawIndexedIndirectCountAMD (pVkCmdDrawIndexedIndirectCountAMD deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndexedIndirectCountAMD
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+cmdProcessCommandsNVX :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ())
+cmdProcessCommandsNVX deviceCmds = mkVkCmdProcessCommandsNVX (pVkCmdProcessCommandsNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdProcessCommandsNVX
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ())
+cmdReserveSpaceForCommandsNVX :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ())
+cmdReserveSpaceForCommandsNVX deviceCmds = mkVkCmdReserveSpaceForCommandsNVX (pVkCmdReserveSpaceForCommandsNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdReserveSpaceForCommandsNVX
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ())
+createIndirectCommandsLayoutNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult)
+createIndirectCommandsLayoutNVX deviceCmds = mkVkCreateIndirectCommandsLayoutNVX (pVkCreateIndirectCommandsLayoutNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateIndirectCommandsLayoutNVX
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult)
+destroyIndirectCommandsLayoutNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyIndirectCommandsLayoutNVX deviceCmds = mkVkDestroyIndirectCommandsLayoutNVX (pVkDestroyIndirectCommandsLayoutNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyIndirectCommandsLayoutNVX
+  :: FunPtr (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+createObjectTableNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult)
+createObjectTableNVX deviceCmds = mkVkCreateObjectTableNVX (pVkCreateObjectTableNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateObjectTableNVX
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult)
+destroyObjectTableNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyObjectTableNVX deviceCmds = mkVkDestroyObjectTableNVX (pVkDestroyObjectTableNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyObjectTableNVX
+  :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+registerObjectsNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)
+registerObjectsNVX deviceCmds = mkVkRegisterObjectsNVX (pVkRegisterObjectsNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkRegisterObjectsNVX
+  :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)
+unregisterObjectsNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)
+unregisterObjectsNVX deviceCmds = mkVkUnregisterObjectsNVX (pVkUnregisterObjectsNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUnregisterObjectsNVX
+  :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)
+cmdPushDescriptorSetKHR :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ())
+cmdPushDescriptorSetKHR deviceCmds = mkVkCmdPushDescriptorSetKHR (pVkCmdPushDescriptorSetKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDescriptorSetKHR
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ())
+trimCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ())
+trimCommandPool deviceCmds = mkVkTrimCommandPool (pVkTrimCommandPool deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkTrimCommandPool
+  :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ())
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+getMemoryWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+getMemoryWin32HandleKHR deviceCmds = mkVkGetMemoryWin32HandleKHR (pVkGetMemoryWin32HandleKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryWin32HandleKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+getMemoryWin32HandlePropertiesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult)
+getMemoryWin32HandlePropertiesKHR deviceCmds = mkVkGetMemoryWin32HandlePropertiesKHR (pVkGetMemoryWin32HandlePropertiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryWin32HandlePropertiesKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult)
+#endif
+getMemoryFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+getMemoryFdKHR deviceCmds = mkVkGetMemoryFdKHR (pVkGetMemoryFdKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryFdKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+getMemoryFdPropertiesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult)
+getMemoryFdPropertiesKHR deviceCmds = mkVkGetMemoryFdPropertiesKHR (pVkGetMemoryFdPropertiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryFdPropertiesKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+getSemaphoreWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+getSemaphoreWin32HandleKHR deviceCmds = mkVkGetSemaphoreWin32HandleKHR (pVkGetSemaphoreWin32HandleKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSemaphoreWin32HandleKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+importSemaphoreWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult)
+importSemaphoreWin32HandleKHR deviceCmds = mkVkImportSemaphoreWin32HandleKHR (pVkImportSemaphoreWin32HandleKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkImportSemaphoreWin32HandleKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult)
+#endif
+getSemaphoreFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+getSemaphoreFdKHR deviceCmds = mkVkGetSemaphoreFdKHR (pVkGetSemaphoreFdKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSemaphoreFdKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+importSemaphoreFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult)
+importSemaphoreFdKHR deviceCmds = mkVkImportSemaphoreFdKHR (pVkImportSemaphoreFdKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkImportSemaphoreFdKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+getFenceWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+getFenceWin32HandleKHR deviceCmds = mkVkGetFenceWin32HandleKHR (pVkGetFenceWin32HandleKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetFenceWin32HandleKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)
+importFenceWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult)
+importFenceWin32HandleKHR deviceCmds = mkVkImportFenceWin32HandleKHR (pVkImportFenceWin32HandleKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkImportFenceWin32HandleKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult)
+#endif
+getFenceFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+getFenceFdKHR deviceCmds = mkVkGetFenceFdKHR (pVkGetFenceFdKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetFenceFdKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)
+importFenceFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult)
+importFenceFdKHR deviceCmds = mkVkImportFenceFdKHR (pVkImportFenceFdKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkImportFenceFdKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult)
+displayPowerControlEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult)
+displayPowerControlEXT deviceCmds = mkVkDisplayPowerControlEXT (pVkDisplayPowerControlEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDisplayPowerControlEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult)
+registerDeviceEventEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+registerDeviceEventEXT deviceCmds = mkVkRegisterDeviceEventEXT (pVkRegisterDeviceEventEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkRegisterDeviceEventEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+registerDisplayEventEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+registerDisplayEventEXT deviceCmds = mkVkRegisterDisplayEventEXT (pVkRegisterDisplayEventEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkRegisterDisplayEventEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)
+getSwapchainCounterEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult)
+getSwapchainCounterEXT deviceCmds = mkVkGetSwapchainCounterEXT (pVkGetSwapchainCounterEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSwapchainCounterEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult)
+getDeviceGroupPeerMemoryFeatures :: DeviceCmds -> (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ())
+getDeviceGroupPeerMemoryFeatures deviceCmds = mkVkGetDeviceGroupPeerMemoryFeatures (pVkGetDeviceGroupPeerMemoryFeatures deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceGroupPeerMemoryFeatures
+  :: FunPtr (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()) -> (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ())
+bindBufferMemory2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult)
+bindBufferMemory2 deviceCmds = mkVkBindBufferMemory2 (pVkBindBufferMemory2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindBufferMemory2
+  :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult) -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult)
+bindImageMemory2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult)
+bindImageMemory2 deviceCmds = mkVkBindImageMemory2 (pVkBindImageMemory2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindImageMemory2
+  :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult) -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult)
+cmdSetDeviceMask :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ())
+cmdSetDeviceMask deviceCmds = mkVkCmdSetDeviceMask (pVkCmdSetDeviceMask deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDeviceMask
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ())
+getDeviceGroupPresentCapabilitiesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult)
+getDeviceGroupPresentCapabilitiesKHR deviceCmds = mkVkGetDeviceGroupPresentCapabilitiesKHR (pVkGetDeviceGroupPresentCapabilitiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceGroupPresentCapabilitiesKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult)
+getDeviceGroupSurfacePresentModesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult)
+getDeviceGroupSurfacePresentModesKHR deviceCmds = mkVkGetDeviceGroupSurfacePresentModesKHR (pVkGetDeviceGroupSurfacePresentModesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceGroupSurfacePresentModesKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult)
+acquireNextImage2KHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)
+acquireNextImage2KHR deviceCmds = mkVkAcquireNextImage2KHR (pVkAcquireNextImage2KHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAcquireNextImage2KHR
+  :: FunPtr (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)
+cmdDispatchBase :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
+cmdDispatchBase deviceCmds = mkVkCmdDispatchBase (pVkCmdDispatchBase deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchBase
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
+createDescriptorUpdateTemplate :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult)
+createDescriptorUpdateTemplate deviceCmds = mkVkCreateDescriptorUpdateTemplate (pVkCreateDescriptorUpdateTemplate deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDescriptorUpdateTemplate
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult)
+destroyDescriptorUpdateTemplate :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyDescriptorUpdateTemplate deviceCmds = mkVkDestroyDescriptorUpdateTemplate (pVkDestroyDescriptorUpdateTemplate deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDescriptorUpdateTemplate
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+updateDescriptorSetWithTemplate :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ())
+updateDescriptorSetWithTemplate deviceCmds = mkVkUpdateDescriptorSetWithTemplate (pVkUpdateDescriptorSetWithTemplate deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUpdateDescriptorSetWithTemplate
+  :: FunPtr (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ())
+cmdPushDescriptorSetWithTemplateKHR :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())
+cmdPushDescriptorSetWithTemplateKHR deviceCmds = mkVkCmdPushDescriptorSetWithTemplateKHR (pVkCmdPushDescriptorSetWithTemplateKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDescriptorSetWithTemplateKHR
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())
+setHdrMetadataEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ())
+setHdrMetadataEXT deviceCmds = mkVkSetHdrMetadataEXT (pVkSetHdrMetadataEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetHdrMetadataEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ()) -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ())
+getSwapchainStatusKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult)
+getSwapchainStatusKHR deviceCmds = mkVkGetSwapchainStatusKHR (pVkGetSwapchainStatusKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSwapchainStatusKHR
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult)
+getRefreshCycleDurationGOOGLE :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult)
+getRefreshCycleDurationGOOGLE deviceCmds = mkVkGetRefreshCycleDurationGOOGLE (pVkGetRefreshCycleDurationGOOGLE deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRefreshCycleDurationGOOGLE
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult)
+getPastPresentationTimingGOOGLE :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult)
+getPastPresentationTimingGOOGLE deviceCmds = mkVkGetPastPresentationTimingGOOGLE (pVkGetPastPresentationTimingGOOGLE deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPastPresentationTimingGOOGLE
+  :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult)
+cmdSetViewportWScalingNV :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ())
+cmdSetViewportWScalingNV deviceCmds = mkVkCmdSetViewportWScalingNV (pVkCmdSetViewportWScalingNV deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetViewportWScalingNV
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ())
+cmdSetDiscardRectangleEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ())
+cmdSetDiscardRectangleEXT deviceCmds = mkVkCmdSetDiscardRectangleEXT (pVkCmdSetDiscardRectangleEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDiscardRectangleEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ())
+cmdSetSampleLocationsEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ())
+cmdSetSampleLocationsEXT deviceCmds = mkVkCmdSetSampleLocationsEXT (pVkCmdSetSampleLocationsEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetSampleLocationsEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ())
+getBufferMemoryRequirements2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())
+getBufferMemoryRequirements2 deviceCmds = mkVkGetBufferMemoryRequirements2 (pVkGetBufferMemoryRequirements2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetBufferMemoryRequirements2
+  :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())
+getImageMemoryRequirements2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())
+getImageMemoryRequirements2 deviceCmds = mkVkGetImageMemoryRequirements2 (pVkGetImageMemoryRequirements2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageMemoryRequirements2
+  :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())
+getImageSparseMemoryRequirements2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ())
+getImageSparseMemoryRequirements2 deviceCmds = mkVkGetImageSparseMemoryRequirements2 (pVkGetImageSparseMemoryRequirements2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageSparseMemoryRequirements2
+  :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ()) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ())
+createSamplerYcbcrConversion :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult)
+createSamplerYcbcrConversion deviceCmds = mkVkCreateSamplerYcbcrConversion (pVkCreateSamplerYcbcrConversion deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateSamplerYcbcrConversion
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult)
+destroySamplerYcbcrConversion :: DeviceCmds -> (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroySamplerYcbcrConversion deviceCmds = mkVkDestroySamplerYcbcrConversion (pVkDestroySamplerYcbcrConversion deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroySamplerYcbcrConversion
+  :: FunPtr (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getDeviceQueue2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ())
+getDeviceQueue2 deviceCmds = mkVkGetDeviceQueue2 (pVkGetDeviceQueue2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceQueue2
+  :: FunPtr (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ()) -> (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ())
+createValidationCacheEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult)
+createValidationCacheEXT deviceCmds = mkVkCreateValidationCacheEXT (pVkCreateValidationCacheEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateValidationCacheEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult)
+destroyValidationCacheEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyValidationCacheEXT deviceCmds = mkVkDestroyValidationCacheEXT (pVkDestroyValidationCacheEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyValidationCacheEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getValidationCacheDataEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)
+getValidationCacheDataEXT deviceCmds = mkVkGetValidationCacheDataEXT (pVkGetValidationCacheDataEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetValidationCacheDataEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult) -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)
+mergeValidationCachesEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult)
+mergeValidationCachesEXT deviceCmds = mkVkMergeValidationCachesEXT (pVkMergeValidationCachesEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkMergeValidationCachesEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult)
+getDescriptorSetLayoutSupport :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ())
+getDescriptorSetLayoutSupport deviceCmds = mkVkGetDescriptorSetLayoutSupport (pVkGetDescriptorSetLayoutSupport deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDescriptorSetLayoutSupport
+  :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ()) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ())
+getSwapchainGrallocUsageANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult)
+getSwapchainGrallocUsageANDROID deviceCmds = mkVkGetSwapchainGrallocUsageANDROID (pVkGetSwapchainGrallocUsageANDROID deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSwapchainGrallocUsageANDROID
+  :: FunPtr (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult)
+acquireImageANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult)
+acquireImageANDROID deviceCmds = mkVkAcquireImageANDROID (pVkAcquireImageANDROID deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAcquireImageANDROID
+  :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult)
+queueSignalReleaseImageANDROID :: DeviceCmds -> (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult)
+queueSignalReleaseImageANDROID deviceCmds = mkVkQueueSignalReleaseImageANDROID (pVkQueueSignalReleaseImageANDROID deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueSignalReleaseImageANDROID
+  :: FunPtr (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult)
+getShaderInfoAMD :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult)
+getShaderInfoAMD deviceCmds = mkVkGetShaderInfoAMD (pVkGetShaderInfoAMD deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetShaderInfoAMD
+  :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult)
+setDebugUtilsObjectNameEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult)
+setDebugUtilsObjectNameEXT deviceCmds = mkVkSetDebugUtilsObjectNameEXT (pVkSetDebugUtilsObjectNameEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetDebugUtilsObjectNameEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult)
+setDebugUtilsObjectTagEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult)
+setDebugUtilsObjectTagEXT deviceCmds = mkVkSetDebugUtilsObjectTagEXT (pVkSetDebugUtilsObjectTagEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetDebugUtilsObjectTagEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult)
+queueBeginDebugUtilsLabelEXT :: DeviceCmds -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+queueBeginDebugUtilsLabelEXT deviceCmds = mkVkQueueBeginDebugUtilsLabelEXT (pVkQueueBeginDebugUtilsLabelEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueBeginDebugUtilsLabelEXT
+  :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+queueEndDebugUtilsLabelEXT :: DeviceCmds -> (("queue" ::: VkQueue) -> IO ())
+queueEndDebugUtilsLabelEXT deviceCmds = mkVkQueueEndDebugUtilsLabelEXT (pVkQueueEndDebugUtilsLabelEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueEndDebugUtilsLabelEXT
+  :: FunPtr (("queue" ::: VkQueue) -> IO ()) -> (("queue" ::: VkQueue) -> IO ())
+queueInsertDebugUtilsLabelEXT :: DeviceCmds -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+queueInsertDebugUtilsLabelEXT deviceCmds = mkVkQueueInsertDebugUtilsLabelEXT (pVkQueueInsertDebugUtilsLabelEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueInsertDebugUtilsLabelEXT
+  :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+cmdBeginDebugUtilsLabelEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+cmdBeginDebugUtilsLabelEXT deviceCmds = mkVkCmdBeginDebugUtilsLabelEXT (pVkCmdBeginDebugUtilsLabelEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginDebugUtilsLabelEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+cmdEndDebugUtilsLabelEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+cmdEndDebugUtilsLabelEXT deviceCmds = mkVkCmdEndDebugUtilsLabelEXT (pVkCmdEndDebugUtilsLabelEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndDebugUtilsLabelEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())
+cmdInsertDebugUtilsLabelEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+cmdInsertDebugUtilsLabelEXT deviceCmds = mkVkCmdInsertDebugUtilsLabelEXT (pVkCmdInsertDebugUtilsLabelEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdInsertDebugUtilsLabelEXT
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())
+getMemoryHostPointerPropertiesEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult)
+getMemoryHostPointerPropertiesEXT deviceCmds = mkVkGetMemoryHostPointerPropertiesEXT (pVkGetMemoryHostPointerPropertiesEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryHostPointerPropertiesEXT
+  :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult)
+cmdWriteBufferMarkerAMD :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ())
+cmdWriteBufferMarkerAMD deviceCmds = mkVkCmdWriteBufferMarkerAMD (pVkCmdWriteBufferMarkerAMD deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteBufferMarkerAMD
+  :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ())
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+getAndroidHardwareBufferPropertiesANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult)
+getAndroidHardwareBufferPropertiesANDROID deviceCmds = mkVkGetAndroidHardwareBufferPropertiesANDROID (pVkGetAndroidHardwareBufferPropertiesANDROID deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetAndroidHardwareBufferPropertiesANDROID
+  :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult) -> (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult)
+getMemoryAndroidHardwareBufferANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult)
+getMemoryAndroidHardwareBufferANDROID deviceCmds = mkVkGetMemoryAndroidHardwareBufferANDROID (pVkGetMemoryAndroidHardwareBufferANDROID deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryAndroidHardwareBufferANDROID
+  :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult)
+#endif
+
+-- * Instance commands
+destroyInstance :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyInstance deviceCmds = mkVkDestroyInstance (pVkDestroyInstance deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyInstance
+  :: FunPtr (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+enumeratePhysicalDevices :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult)
+enumeratePhysicalDevices deviceCmds = mkVkEnumeratePhysicalDevices (pVkEnumeratePhysicalDevices deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEnumeratePhysicalDevices
+  :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult)
+getInstanceProcAddr :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
+getInstanceProcAddr deviceCmds = mkVkGetInstanceProcAddr (pVkGetInstanceProcAddr deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetInstanceProcAddr
+  :: FunPtr (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) -> (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
+getPhysicalDeviceProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ())
+getPhysicalDeviceProperties deviceCmds = mkVkGetPhysicalDeviceProperties (pVkGetPhysicalDeviceProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ())
+getPhysicalDeviceQueueFamilyProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ())
+getPhysicalDeviceQueueFamilyProperties deviceCmds = mkVkGetPhysicalDeviceQueueFamilyProperties (pVkGetPhysicalDeviceQueueFamilyProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ())
+getPhysicalDeviceMemoryProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ())
+getPhysicalDeviceMemoryProperties deviceCmds = mkVkGetPhysicalDeviceMemoryProperties (pVkGetPhysicalDeviceMemoryProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceMemoryProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ())
+getPhysicalDeviceFeatures :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ())
+getPhysicalDeviceFeatures deviceCmds = mkVkGetPhysicalDeviceFeatures (pVkGetPhysicalDeviceFeatures deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceFeatures
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ())
+getPhysicalDeviceFormatProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ())
+getPhysicalDeviceFormatProperties deviceCmds = mkVkGetPhysicalDeviceFormatProperties (pVkGetPhysicalDeviceFormatProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceFormatProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ())
+getPhysicalDeviceImageFormatProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult)
+getPhysicalDeviceImageFormatProperties deviceCmds = mkVkGetPhysicalDeviceImageFormatProperties (pVkGetPhysicalDeviceImageFormatProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceImageFormatProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult)
+createDevice :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult)
+createDevice deviceCmds = mkVkCreateDevice (pVkCreateDevice deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDevice
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult)
+enumerateDeviceLayerProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult)
+enumerateDeviceLayerProperties deviceCmds = mkVkEnumerateDeviceLayerProperties (pVkEnumerateDeviceLayerProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEnumerateDeviceLayerProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult)
+enumerateDeviceExtensionProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult)
+enumerateDeviceExtensionProperties deviceCmds = mkVkEnumerateDeviceExtensionProperties (pVkEnumerateDeviceExtensionProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEnumerateDeviceExtensionProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult)
+getPhysicalDeviceSparseImageFormatProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ())
+getPhysicalDeviceSparseImageFormatProperties deviceCmds = mkVkGetPhysicalDeviceSparseImageFormatProperties (pVkGetPhysicalDeviceSparseImageFormatProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSparseImageFormatProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ())
+#if defined(VK_USE_PLATFORM_ANDROID_KHR)
+createAndroidSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createAndroidSurfaceKHR deviceCmds = mkVkCreateAndroidSurfaceKHR (pVkCreateAndroidSurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateAndroidSurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+getPhysicalDeviceDisplayPropertiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult)
+getPhysicalDeviceDisplayPropertiesKHR deviceCmds = mkVkGetPhysicalDeviceDisplayPropertiesKHR (pVkGetPhysicalDeviceDisplayPropertiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceDisplayPropertiesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult)
+getPhysicalDeviceDisplayPlanePropertiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult)
+getPhysicalDeviceDisplayPlanePropertiesKHR deviceCmds = mkVkGetPhysicalDeviceDisplayPlanePropertiesKHR (pVkGetPhysicalDeviceDisplayPlanePropertiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceDisplayPlanePropertiesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult)
+getDisplayPlaneSupportedDisplaysKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult)
+getDisplayPlaneSupportedDisplaysKHR deviceCmds = mkVkGetDisplayPlaneSupportedDisplaysKHR (pVkGetDisplayPlaneSupportedDisplaysKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDisplayPlaneSupportedDisplaysKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult)
+getDisplayModePropertiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult)
+getDisplayModePropertiesKHR deviceCmds = mkVkGetDisplayModePropertiesKHR (pVkGetDisplayModePropertiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDisplayModePropertiesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult)
+createDisplayModeKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult)
+createDisplayModeKHR deviceCmds = mkVkCreateDisplayModeKHR (pVkCreateDisplayModeKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDisplayModeKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult)
+getDisplayPlaneCapabilitiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult)
+getDisplayPlaneCapabilitiesKHR deviceCmds = mkVkGetDisplayPlaneCapabilitiesKHR (pVkGetDisplayPlaneCapabilitiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDisplayPlaneCapabilitiesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult)
+createDisplayPlaneSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createDisplayPlaneSurfaceKHR deviceCmds = mkVkCreateDisplayPlaneSurfaceKHR (pVkCreateDisplayPlaneSurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDisplayPlaneSurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_MIR_KHR)
+createMirSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createMirSurfaceKHR deviceCmds = mkVkCreateMirSurfaceKHR (pVkCreateMirSurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateMirSurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+getPhysicalDeviceMirPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32)
+getPhysicalDeviceMirPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceMirPresentationSupportKHR (pVkGetPhysicalDeviceMirPresentationSupportKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceMirPresentationSupportKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32)
+#endif
+destroySurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroySurfaceKHR deviceCmds = mkVkDestroySurfaceKHR (pVkDestroySurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroySurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+getPhysicalDeviceSurfaceSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult)
+getPhysicalDeviceSurfaceSupportKHR deviceCmds = mkVkGetPhysicalDeviceSurfaceSupportKHR (pVkGetPhysicalDeviceSurfaceSupportKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfaceSupportKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult)
+getPhysicalDeviceSurfaceCapabilitiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult)
+getPhysicalDeviceSurfaceCapabilitiesKHR deviceCmds = mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR (pVkGetPhysicalDeviceSurfaceCapabilitiesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult)
+getPhysicalDeviceSurfaceFormatsKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult)
+getPhysicalDeviceSurfaceFormatsKHR deviceCmds = mkVkGetPhysicalDeviceSurfaceFormatsKHR (pVkGetPhysicalDeviceSurfaceFormatsKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfaceFormatsKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult)
+getPhysicalDeviceSurfacePresentModesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult)
+getPhysicalDeviceSurfacePresentModesKHR deviceCmds = mkVkGetPhysicalDeviceSurfacePresentModesKHR (pVkGetPhysicalDeviceSurfacePresentModesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfacePresentModesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_VI_NN)
+createViSurfaceNN :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createViSurfaceNN deviceCmds = mkVkCreateViSurfaceNN (pVkCreateViSurfaceNN deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateViSurfaceNN
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
+createWaylandSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createWaylandSurfaceKHR deviceCmds = mkVkCreateWaylandSurfaceKHR (pVkCreateWaylandSurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateWaylandSurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+getPhysicalDeviceWaylandPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32)
+getPhysicalDeviceWaylandPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceWaylandPresentationSupportKHR (pVkGetPhysicalDeviceWaylandPresentationSupportKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceWaylandPresentationSupportKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32)
+#endif
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+createWin32SurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createWin32SurfaceKHR deviceCmds = mkVkCreateWin32SurfaceKHR (pVkCreateWin32SurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateWin32SurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+getPhysicalDeviceWin32PresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32)
+getPhysicalDeviceWin32PresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceWin32PresentationSupportKHR (pVkGetPhysicalDeviceWin32PresentationSupportKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceWin32PresentationSupportKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32)
+#endif
+#if defined(VK_USE_PLATFORM_XLIB_KHR)
+createXlibSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createXlibSurfaceKHR deviceCmds = mkVkCreateXlibSurfaceKHR (pVkCreateXlibSurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateXlibSurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+getPhysicalDeviceXlibPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32)
+getPhysicalDeviceXlibPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceXlibPresentationSupportKHR (pVkGetPhysicalDeviceXlibPresentationSupportKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceXlibPresentationSupportKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32)
+#endif
+#if defined(VK_USE_PLATFORM_XCB_KHR)
+createXcbSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createXcbSurfaceKHR deviceCmds = mkVkCreateXcbSurfaceKHR (pVkCreateXcbSurfaceKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateXcbSurfaceKHR
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+getPhysicalDeviceXcbPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32)
+getPhysicalDeviceXcbPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceXcbPresentationSupportKHR (pVkGetPhysicalDeviceXcbPresentationSupportKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceXcbPresentationSupportKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32)
+#endif
+createDebugReportCallbackEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult)
+createDebugReportCallbackEXT deviceCmds = mkVkCreateDebugReportCallbackEXT (pVkCreateDebugReportCallbackEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDebugReportCallbackEXT
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult)
+destroyDebugReportCallbackEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyDebugReportCallbackEXT deviceCmds = mkVkDestroyDebugReportCallbackEXT (pVkDestroyDebugReportCallbackEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDebugReportCallbackEXT
+  :: FunPtr (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+debugReportMessageEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())
+debugReportMessageEXT deviceCmds = mkVkDebugReportMessageEXT (pVkDebugReportMessageEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDebugReportMessageEXT
+  :: FunPtr (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()) -> (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())
+getPhysicalDeviceExternalImageFormatPropertiesNV :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult)
+getPhysicalDeviceExternalImageFormatPropertiesNV deviceCmds = mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV (pVkGetPhysicalDeviceExternalImageFormatPropertiesNV deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult)
+getPhysicalDeviceGeneratedCommandsPropertiesNVX :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ())
+getPhysicalDeviceGeneratedCommandsPropertiesNVX deviceCmds = mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX (pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ())
+getPhysicalDeviceFeatures2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ())
+getPhysicalDeviceFeatures2 deviceCmds = mkVkGetPhysicalDeviceFeatures2 (pVkGetPhysicalDeviceFeatures2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceFeatures2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ())
+getPhysicalDeviceProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ())
+getPhysicalDeviceProperties2 deviceCmds = mkVkGetPhysicalDeviceProperties2 (pVkGetPhysicalDeviceProperties2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceProperties2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ())
+getPhysicalDeviceFormatProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ())
+getPhysicalDeviceFormatProperties2 deviceCmds = mkVkGetPhysicalDeviceFormatProperties2 (pVkGetPhysicalDeviceFormatProperties2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceFormatProperties2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ())
+getPhysicalDeviceImageFormatProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult)
+getPhysicalDeviceImageFormatProperties2 deviceCmds = mkVkGetPhysicalDeviceImageFormatProperties2 (pVkGetPhysicalDeviceImageFormatProperties2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceImageFormatProperties2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult)
+getPhysicalDeviceQueueFamilyProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ())
+getPhysicalDeviceQueueFamilyProperties2 deviceCmds = mkVkGetPhysicalDeviceQueueFamilyProperties2 (pVkGetPhysicalDeviceQueueFamilyProperties2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ())
+getPhysicalDeviceMemoryProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ())
+getPhysicalDeviceMemoryProperties2 deviceCmds = mkVkGetPhysicalDeviceMemoryProperties2 (pVkGetPhysicalDeviceMemoryProperties2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceMemoryProperties2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ())
+getPhysicalDeviceSparseImageFormatProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ())
+getPhysicalDeviceSparseImageFormatProperties2 deviceCmds = mkVkGetPhysicalDeviceSparseImageFormatProperties2 (pVkGetPhysicalDeviceSparseImageFormatProperties2 deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSparseImageFormatProperties2
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ())
+getPhysicalDeviceExternalBufferProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ())
+getPhysicalDeviceExternalBufferProperties deviceCmds = mkVkGetPhysicalDeviceExternalBufferProperties (pVkGetPhysicalDeviceExternalBufferProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceExternalBufferProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ())
+getPhysicalDeviceExternalSemaphoreProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ())
+getPhysicalDeviceExternalSemaphoreProperties deviceCmds = mkVkGetPhysicalDeviceExternalSemaphoreProperties (pVkGetPhysicalDeviceExternalSemaphoreProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceExternalSemaphoreProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ())
+getPhysicalDeviceExternalFenceProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ())
+getPhysicalDeviceExternalFenceProperties deviceCmds = mkVkGetPhysicalDeviceExternalFenceProperties (pVkGetPhysicalDeviceExternalFenceProperties deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceExternalFenceProperties
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ())
+releaseDisplayEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult)
+releaseDisplayEXT deviceCmds = mkVkReleaseDisplayEXT (pVkReleaseDisplayEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkReleaseDisplayEXT
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+acquireXlibDisplayEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult)
+acquireXlibDisplayEXT deviceCmds = mkVkAcquireXlibDisplayEXT (pVkAcquireXlibDisplayEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkAcquireXlibDisplayEXT
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult)
+getRandROutputDisplayEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult)
+getRandROutputDisplayEXT deviceCmds = mkVkGetRandROutputDisplayEXT (pVkGetRandROutputDisplayEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRandROutputDisplayEXT
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult)
+#endif
+getPhysicalDeviceSurfaceCapabilities2EXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult)
+getPhysicalDeviceSurfaceCapabilities2EXT deviceCmds = mkVkGetPhysicalDeviceSurfaceCapabilities2EXT (pVkGetPhysicalDeviceSurfaceCapabilities2EXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2EXT
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult)
+enumeratePhysicalDeviceGroups :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult)
+enumeratePhysicalDeviceGroups deviceCmds = mkVkEnumeratePhysicalDeviceGroups (pVkEnumeratePhysicalDeviceGroups deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEnumeratePhysicalDeviceGroups
+  :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult)
+getPhysicalDevicePresentRectanglesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult)
+getPhysicalDevicePresentRectanglesKHR deviceCmds = mkVkGetPhysicalDevicePresentRectanglesKHR (pVkGetPhysicalDevicePresentRectanglesKHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDevicePresentRectanglesKHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult)
+#if defined(VK_USE_PLATFORM_IOS_MVK)
+createIOSSurfaceMVK :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createIOSSurfaceMVK deviceCmds = mkVkCreateIOSSurfaceMVK (pVkCreateIOSSurfaceMVK deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateIOSSurfaceMVK
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+createMacOSSurfaceMVK :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+createMacOSSurfaceMVK deviceCmds = mkVkCreateMacOSSurfaceMVK (pVkCreateMacOSSurfaceMVK deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateMacOSSurfaceMVK
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)
+#endif
+getPhysicalDeviceMultisamplePropertiesEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ())
+getPhysicalDeviceMultisamplePropertiesEXT deviceCmds = mkVkGetPhysicalDeviceMultisamplePropertiesEXT (pVkGetPhysicalDeviceMultisamplePropertiesEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceMultisamplePropertiesEXT
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ())
+getPhysicalDeviceSurfaceCapabilities2KHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult)
+getPhysicalDeviceSurfaceCapabilities2KHR deviceCmds = mkVkGetPhysicalDeviceSurfaceCapabilities2KHR (pVkGetPhysicalDeviceSurfaceCapabilities2KHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2KHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult)
+getPhysicalDeviceSurfaceFormats2KHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult)
+getPhysicalDeviceSurfaceFormats2KHR deviceCmds = mkVkGetPhysicalDeviceSurfaceFormats2KHR (pVkGetPhysicalDeviceSurfaceFormats2KHR deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceSurfaceFormats2KHR
+  :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult)
+createDebugUtilsMessengerEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult)
+createDebugUtilsMessengerEXT deviceCmds = mkVkCreateDebugUtilsMessengerEXT (pVkCreateDebugUtilsMessengerEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDebugUtilsMessengerEXT
+  :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult)
+destroyDebugUtilsMessengerEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+destroyDebugUtilsMessengerEXT deviceCmds = mkVkDestroyDebugUtilsMessengerEXT (pVkDestroyDebugUtilsMessengerEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDebugUtilsMessengerEXT
+  :: FunPtr (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())
+submitDebugUtilsMessageEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ())
+submitDebugUtilsMessageEXT deviceCmds = mkVkSubmitDebugUtilsMessageEXT (pVkSubmitDebugUtilsMessageEXT deviceCmds)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSubmitDebugUtilsMessageEXT
+  :: FunPtr (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ()) -> (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ())
diff --git a/src/Graphics/Vulkan/Extensions.hs b/src/Graphics/Vulkan/Extensions.hs
--- a/src/Graphics/Vulkan/Extensions.hs
+++ b/src/Graphics/Vulkan/Extensions.hs
@@ -3,7 +3,7 @@
 
 
 module Graphics.Vulkan.Extensions
-  (     module Graphics.Vulkan.Extensions.VK_KHR_surface
+  ( module Graphics.Vulkan.Extensions.VK_KHR_surface
   , module Graphics.Vulkan.Extensions.VK_KHR_swapchain
   , module Graphics.Vulkan.Extensions.VK_KHR_display
   , module Graphics.Vulkan.Extensions.VK_KHR_display_swapchain
@@ -49,8 +49,6 @@
   , module Graphics.Vulkan.Extensions.VK_NV_external_memory
 #if defined(VK_USE_PLATFORM_WIN32_KHR)
   , module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32
-#endif
-#if defined(VK_USE_PLATFORM_WIN32_KHR)
   , module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex
 #endif
   , module Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2
diff --git a/src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs b/src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs
--- a/src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs
@@ -146,4 +146,8 @@
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,
 -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits'
-foreign import ccall "vkCmdWriteBufferMarkerAMD" vkCmdWriteBufferMarkerAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdWriteBufferMarkerAMD" vkCmdWriteBufferMarkerAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ()
diff --git a/src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs b/src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
--- a/src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
@@ -259,7 +259,11 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdDrawIndirectCountAMD" vkCmdDrawIndirectCountAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDrawIndirectCountAMD" vkCmdDrawIndirectCountAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
 -- | vkCmdDrawIndexedIndirectCountAMD - Perform an indexed indirect draw with
 -- the draw count sourced from a buffer
 --
@@ -480,4 +484,8 @@
 --
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
-foreign import ccall "vkCmdDrawIndexedIndirectCountAMD" vkCmdDrawIndexedIndirectCountAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDrawIndexedIndirectCountAMD" vkCmdDrawIndexedIndirectCountAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()
diff --git a/src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs b/src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs
--- a/src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs
@@ -22,16 +22,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs b/src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
--- a/src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
@@ -18,12 +18,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs b/src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs
--- a/src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs
@@ -35,16 +35,16 @@
   ( CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -209,7 +209,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline', 'VkShaderInfoTypeAMD',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits'
-foreign import ccall "vkGetShaderInfoAMD" vkGetShaderInfoAMD :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetShaderInfoAMD" vkGetShaderInfoAMD :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult
 -- | VkShaderResourceUsageAMD - Resource usage information about a particular
 -- shader within a pipeline
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs b/src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
--- a/src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
@@ -15,12 +15,12 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -31,16 +31,16 @@
   ( IsString
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -53,9 +53,9 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkFormatFeatureFlags
+  ( VkDevice
   , VkDeviceSize
-  , VkDevice
+  , VkFormatFeatureFlags
   )
 import Graphics.Vulkan.Core10.ImageView
   ( VkComponentMapping(..)
@@ -68,8 +68,8 @@
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion
   ( VkChromaLocation(..)
-  , VkSamplerYcbcrRange(..)
   , VkSamplerYcbcrModelConversion(..)
+  , VkSamplerYcbcrRange(..)
   )
 
 
@@ -140,7 +140,11 @@
 --
 -- 'VkAndroidHardwareBufferPropertiesANDROID',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkGetAndroidHardwareBufferPropertiesANDROID" vkGetAndroidHardwareBufferPropertiesANDROID :: ("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetAndroidHardwareBufferPropertiesANDROID" vkGetAndroidHardwareBufferPropertiesANDROID :: ("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult
 -- | vkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer
 -- for a memory object
 --
@@ -194,7 +198,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMemoryGetAndroidHardwareBufferInfoANDROID'
-foreign import ccall "vkGetMemoryAndroidHardwareBufferANDROID" vkGetMemoryAndroidHardwareBufferANDROID :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryAndroidHardwareBufferANDROID" vkGetMemoryAndroidHardwareBufferANDROID :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult
 -- | VkImportAndroidHardwareBufferInfoANDROID - Import memory from an Android
 -- hardware buffer
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
@@ -97,7 +97,11 @@
 --
 -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkAcquireXlibDisplayEXT" vkAcquireXlibDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkAcquireXlibDisplayEXT" vkAcquireXlibDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult
 -- | vkGetRandROutputDisplayEXT - Query the VkDisplayKHR corresponding to an
 -- X11 RandR Output
 --
@@ -138,4 +142,8 @@
 --
 -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetRandROutputDisplayEXT" vkGetRandROutputDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetRandROutputDisplayEXT" vkGetRandROutputDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
@@ -77,16 +77,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
@@ -33,16 +33,16 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs
@@ -32,17 +32,17 @@
   ( Word64
   )
 import Foreign.C.Types
-  ( CFloat(..)
-  , CChar(..)
+  ( CChar(..)
+  , CFloat(..)
   , CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -114,7 +114,11 @@
 --
 -- 'VkDebugMarkerObjectNameInfoEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDebugMarkerSetObjectNameEXT" vkDebugMarkerSetObjectNameEXT :: ("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDebugMarkerSetObjectNameEXT" vkDebugMarkerSetObjectNameEXT :: ("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult
 -- | vkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an object
 --
 -- = Parameters
@@ -150,7 +154,11 @@
 --
 -- 'VkDebugMarkerObjectTagInfoEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkDebugMarkerSetObjectTagEXT" vkDebugMarkerSetObjectTagEXT :: ("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDebugMarkerSetObjectTagEXT" vkDebugMarkerSetObjectTagEXT :: ("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult
 -- | vkCmdDebugMarkerBeginEXT - Open a command buffer marker region
 --
 -- = Parameters
@@ -196,7 +204,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'VkDebugMarkerMarkerInfoEXT'
-foreign import ccall "vkCmdDebugMarkerBeginEXT" vkCmdDebugMarkerBeginEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDebugMarkerBeginEXT" vkCmdDebugMarkerBeginEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()
 -- | vkCmdDebugMarkerEndEXT - Close a command buffer marker region
 --
 -- = Parameters
@@ -254,7 +266,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdDebugMarkerEndEXT" vkCmdDebugMarkerEndEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDebugMarkerEndEXT" vkCmdDebugMarkerEndEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()
 -- | vkCmdDebugMarkerInsertEXT - Insert a marker label into a command buffer
 --
 -- = Parameters
@@ -300,7 +316,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'VkDebugMarkerMarkerInfoEXT'
-foreign import ccall "vkCmdDebugMarkerInsertEXT" vkCmdDebugMarkerInsertEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdDebugMarkerInsertEXT" vkCmdDebugMarkerInsertEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()
 -- | VkDebugMarkerObjectNameInfoEXT - Specify parameters of a name to give to
 -- an object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs
@@ -85,16 +85,16 @@
   , CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -116,8 +116,8 @@
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
   , VkObjectType(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
@@ -642,7 +642,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDebugReportCallbackCreateInfoEXT', 'VkDebugReportCallbackEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'
-foreign import ccall "vkCreateDebugReportCallbackEXT" vkCreateDebugReportCallbackEXT :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDebugReportCallbackEXT" vkCreateDebugReportCallbackEXT :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult
 -- | vkDestroyDebugReportCallbackEXT - Destroy a debug report callback object
 --
 -- = Parameters
@@ -689,7 +693,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDebugReportCallbackEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'
-foreign import ccall "vkDestroyDebugReportCallbackEXT" vkDestroyDebugReportCallbackEXT :: ("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyDebugReportCallbackEXT" vkDestroyDebugReportCallbackEXT :: ("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkDebugReportMessageEXT - Inject a message into a debug stream
 --
 -- = Parameters
@@ -751,7 +759,11 @@
 --
 -- 'VkDebugReportFlagsEXT', 'VkDebugReportObjectTypeEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'
-foreign import ccall "vkDebugReportMessageEXT" vkDebugReportMessageEXT :: ("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDebugReportMessageEXT" vkDebugReportMessageEXT :: ("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()
 -- | VkDebugReportCallbackCreateInfoEXT - Structure specifying parameters of
 -- a newly created debug report callback
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs
@@ -72,16 +72,16 @@
   , CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -101,16 +101,16 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkResult(..)
-  , VkBool32(..)
+  ( VkBool32(..)
   , VkObjectType(..)
+  , VkResult(..)
   , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
   ( VkAllocationCallbacks(..)
-  , VkInstance
   , VkDevice
+  , VkInstance
   )
 import Graphics.Vulkan.Core10.Queue
   ( VkCommandBuffer
@@ -374,7 +374,11 @@
 --
 -- 'VkDebugUtilsObjectNameInfoEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkSetDebugUtilsObjectNameEXT" vkSetDebugUtilsObjectNameEXT :: ("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkSetDebugUtilsObjectNameEXT" vkSetDebugUtilsObjectNameEXT :: ("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult
 -- | vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an object
 --
 -- = Parameters
@@ -411,7 +415,11 @@
 --
 -- 'VkDebugUtilsObjectTagInfoEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkSetDebugUtilsObjectTagEXT" vkSetDebugUtilsObjectTagEXT :: ("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkSetDebugUtilsObjectTagEXT" vkSetDebugUtilsObjectTagEXT :: ("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult
 -- | vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label region
 --
 -- = Parameters
@@ -443,7 +451,11 @@
 -- = See Also
 --
 -- 'VkDebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Queue.VkQueue'
-foreign import ccall "vkQueueBeginDebugUtilsLabelEXT" vkQueueBeginDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueueBeginDebugUtilsLabelEXT" vkQueueBeginDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
 -- | vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region
 --
 -- = Parameters
@@ -478,7 +490,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkQueue'
-foreign import ccall "vkQueueEndDebugUtilsLabelEXT" vkQueueEndDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueueEndDebugUtilsLabelEXT" vkQueueEndDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> IO ()
 -- | vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queue
 --
 -- = Parameters
@@ -510,7 +526,11 @@
 -- = See Also
 --
 -- 'VkDebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Queue.VkQueue'
-foreign import ccall "vkQueueInsertDebugUtilsLabelEXT" vkQueueInsertDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueueInsertDebugUtilsLabelEXT" vkQueueInsertDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
 -- | vkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label region
 --
 -- = Parameters
@@ -555,7 +575,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkDebugUtilsLabelEXT'
-foreign import ccall "vkCmdBeginDebugUtilsLabelEXT" vkCmdBeginDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdBeginDebugUtilsLabelEXT" vkCmdBeginDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
 -- | vkCmdEndDebugUtilsLabelEXT - Close a command buffer label region
 --
 -- = Parameters
@@ -613,7 +637,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdEndDebugUtilsLabelEXT" vkCmdEndDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdEndDebugUtilsLabelEXT" vkCmdEndDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()
 -- | vkCmdInsertDebugUtilsLabelEXT - Insert a label into a command buffer
 --
 -- = Parameters
@@ -657,7 +685,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkDebugUtilsLabelEXT'
-foreign import ccall "vkCmdInsertDebugUtilsLabelEXT" vkCmdInsertDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdInsertDebugUtilsLabelEXT" vkCmdInsertDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()
 -- | vkCreateDebugUtilsMessengerEXT - Create a debug messenger object
 --
 -- = Parameters
@@ -702,7 +734,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDebugUtilsMessengerCreateInfoEXT', 'VkDebugUtilsMessengerEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'
-foreign import ccall "vkCreateDebugUtilsMessengerEXT" vkCreateDebugUtilsMessengerEXT :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDebugUtilsMessengerEXT" vkCreateDebugUtilsMessengerEXT :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult
 -- | vkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object
 --
 -- = Parameters
@@ -749,7 +785,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDebugUtilsMessengerEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'
-foreign import ccall "vkDestroyDebugUtilsMessengerEXT" vkDestroyDebugUtilsMessengerEXT :: ("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyDebugUtilsMessengerEXT" vkDestroyDebugUtilsMessengerEXT :: ("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream
 --
 -- = Parameters
@@ -793,7 +833,11 @@
 -- 'VkDebugUtilsMessageTypeFlagsEXT',
 -- 'VkDebugUtilsMessengerCallbackDataEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'
-foreign import ccall "vkSubmitDebugUtilsMessageEXT" vkSubmitDebugUtilsMessageEXT :: ("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkSubmitDebugUtilsMessageEXT" vkSubmitDebugUtilsMessageEXT :: ("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ()
 -- | VkDebugUtilsObjectNameInfoEXT - Specify parameters of a name to give to
 -- an object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
@@ -40,16 +40,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
@@ -67,8 +67,8 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DescriptorSet
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs
@@ -59,4 +59,8 @@
 --
 -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkReleaseDisplayEXT" vkReleaseDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkReleaseDisplayEXT" vkReleaseDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
@@ -36,16 +36,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -69,8 +69,8 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.Pipeline
-  ( VkRect2D(..)
-  , VkDynamicState(..)
+  ( VkDynamicState(..)
+  , VkRect2D(..)
   )
 import Graphics.Vulkan.Core10.Queue
   ( VkCommandBuffer
@@ -241,7 +241,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'
-foreign import ccall "vkCmdSetDiscardRectangleEXT" vkCmdSetDiscardRectangleEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetDiscardRectangleEXT" vkCmdSetDiscardRectangleEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ()
 -- | VkPhysicalDeviceDiscardRectanglePropertiesEXT - Structure describing
 -- discard rectangle limits that can be supported by an implementation
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs
@@ -42,16 +42,16 @@
   ( Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -82,8 +82,8 @@
   ( VkFence
   )
 import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter
-  ( VkSurfaceCounterFlagsEXT
-  , VkSurfaceCounterFlagBitsEXT(..)
+  ( VkSurfaceCounterFlagBitsEXT(..)
+  , VkSurfaceCounterFlagsEXT
   )
 import Graphics.Vulkan.Extensions.VK_KHR_display
   ( VkDisplayKHR
@@ -245,7 +245,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',
 -- 'VkDisplayPowerInfoEXT'
-foreign import ccall "vkDisplayPowerControlEXT" vkDisplayPowerControlEXT :: ("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDisplayPowerControlEXT" vkDisplayPowerControlEXT :: ("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult
 -- | vkRegisterDeviceEventEXT - Signal a fence when a device event occurs
 --
 -- = Parameters
@@ -286,7 +290,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceEventInfoEXT', 'Graphics.Vulkan.Core10.Queue.VkFence'
-foreign import ccall "vkRegisterDeviceEventEXT" vkRegisterDeviceEventEXT :: ("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkRegisterDeviceEventEXT" vkRegisterDeviceEventEXT :: ("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult
 -- | vkRegisterDisplayEventEXT - Signal a fence when a display event occurs
 --
 -- = Parameters
@@ -333,7 +341,11 @@
 -- 'VkDisplayEventInfoEXT',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence'
-foreign import ccall "vkRegisterDisplayEventEXT" vkRegisterDisplayEventEXT :: ("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkRegisterDisplayEventEXT" vkRegisterDisplayEventEXT :: ("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult
 -- | vkGetSwapchainCounterEXT - Query the current value of a surface counter
 --
 -- = Parameters
@@ -386,7 +398,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'
-foreign import ccall "vkGetSwapchainCounterEXT" vkGetSwapchainCounterEXT :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetSwapchainCounterEXT" vkGetSwapchainCounterEXT :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult
 -- | VkDisplayPowerInfoEXT - Describe the power state of a display
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
@@ -30,16 +30,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -71,10 +71,10 @@
   ( VkExtent2D(..)
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
-  ( VkCompositeAlphaFlagsKHR
-  , VkSurfaceTransformFlagBitsKHR(..)
-  , VkSurfaceTransformFlagsKHR
+  ( VkSurfaceTransformFlagBitsKHR(..)
+  , VkCompositeAlphaFlagsKHR
   , VkSurfaceKHR
+  , VkSurfaceTransformFlagsKHR
   )
 
 
@@ -170,7 +170,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkSurfaceCapabilities2EXT',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkGetPhysicalDeviceSurfaceCapabilities2EXT" vkGetPhysicalDeviceSurfaceCapabilities2EXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfaceCapabilities2EXT" vkGetPhysicalDeviceSurfaceCapabilities2EXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult
 -- | VkSurfaceCapabilities2EXT - Structure describing capabilities of a
 -- surface
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs
@@ -27,12 +27,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -44,8 +44,8 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkDevice
+  ( VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities
   ( VkExternalMemoryHandleTypeFlagBits(..)
@@ -126,7 +126,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',
 -- 'VkMemoryHostPointerPropertiesEXT'
-foreign import ccall "vkGetMemoryHostPointerPropertiesEXT" vkGetMemoryHostPointerPropertiesEXT :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryHostPointerPropertiesEXT" vkGetMemoryHostPointerPropertiesEXT :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult
 -- | VkImportMemoryHostPointerInfoEXT - import memory from a host pointer
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs
@@ -25,16 +25,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
@@ -51,8 +51,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs
@@ -25,12 +25,12 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -92,7 +92,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkHdrMetadataEXT',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'
-foreign import ccall "vkSetHdrMetadataEXT" vkSetHdrMetadataEXT :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkSetHdrMetadataEXT" vkSetHdrMetadataEXT :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ()
 -- | VkXYColorEXT - structure to specify X,Y chromaticity coordinates
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs
@@ -41,12 +41,12 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -58,14 +58,14 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkSampleCountFlags
+  ( VkImageCreateFlagBits(..)
   , VkSampleCountFlagBits(..)
   , VkPhysicalDevice
-  , VkImageCreateFlagBits(..)
+  , VkSampleCountFlags
   )
 import Graphics.Vulkan.Core10.Pipeline
-  ( VkExtent2D(..)
-  , VkDynamicState(..)
+  ( VkDynamicState(..)
+  , VkExtent2D(..)
   )
 import Graphics.Vulkan.Core10.Queue
   ( VkCommandBuffer
@@ -169,7 +169,11 @@
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'VkSampleLocationsInfoEXT'
-foreign import ccall "vkCmdSetSampleLocationsEXT" vkCmdSetSampleLocationsEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetSampleLocationsEXT" vkCmdSetSampleLocationsEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ()
 -- | vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count
 -- specific multisampling capabilities of a physical device
 --
@@ -201,7 +205,11 @@
 -- 'VkMultisamplePropertiesEXT',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-foreign import ccall "vkGetPhysicalDeviceMultisamplePropertiesEXT" vkGetPhysicalDeviceMultisamplePropertiesEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceMultisamplePropertiesEXT" vkGetPhysicalDeviceMultisamplePropertiesEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ()
 -- | VkSampleLocationEXT - Structure specifying the coordinates of a sample
 -- location
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs
@@ -26,16 +26,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs
@@ -43,16 +43,16 @@
   ( CSize(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -72,8 +72,8 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkResult(..)
-  , VkObjectType(..)
+  ( VkObjectType(..)
+  , VkResult(..)
   , VkStructureType(..)
   , VkFlags
   )
@@ -247,7 +247,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkValidationCacheCreateInfoEXT', 'VkValidationCacheEXT'
-foreign import ccall "vkCreateValidationCacheEXT" vkCreateValidationCacheEXT :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateValidationCacheEXT" vkCreateValidationCacheEXT :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult
 -- | vkDestroyValidationCacheEXT - Destroy a validation cache object
 --
 -- = Parameters
@@ -293,7 +297,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkValidationCacheEXT'
-foreign import ccall "vkDestroyValidationCacheEXT" vkDestroyValidationCacheEXT :: ("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyValidationCacheEXT" vkDestroyValidationCacheEXT :: ("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetValidationCacheDataEXT - Get the data store from a validation cache
 --
 -- = Parameters
@@ -400,7 +408,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkValidationCacheEXT'
-foreign import ccall "vkGetValidationCacheDataEXT" vkGetValidationCacheDataEXT :: ("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetValidationCacheDataEXT" vkGetValidationCacheDataEXT :: ("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult
 -- | vkMergeValidationCachesEXT - Combine the data stores of validation
 -- caches
 --
@@ -465,7 +477,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkValidationCacheEXT'
-foreign import ccall "vkMergeValidationCachesEXT" vkMergeValidationCachesEXT :: ("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkMergeValidationCachesEXT" vkMergeValidationCachesEXT :: ("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult
 -- | VkValidationCacheCreateInfoEXT - Structure specifying parameters of a
 -- newly created validation cache
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs
@@ -25,16 +25,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs b/src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
--- a/src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
@@ -21,12 +21,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs b/src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
--- a/src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
@@ -22,16 +22,16 @@
   ( IsString
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -102,7 +102,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkRefreshCycleDurationGOOGLE',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'
-foreign import ccall "vkGetRefreshCycleDurationGOOGLE" vkGetRefreshCycleDurationGOOGLE :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetRefreshCycleDurationGOOGLE" vkGetRefreshCycleDurationGOOGLE :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult
 -- | vkGetPastPresentationTimingGOOGLE - Obtain timing of a
 -- previously-presented image
 --
@@ -176,7 +180,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkPastPresentationTimingGOOGLE',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'
-foreign import ccall "vkGetPastPresentationTimingGOOGLE" vkGetPastPresentationTimingGOOGLE :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPastPresentationTimingGOOGLE" vkGetPastPresentationTimingGOOGLE :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult
 -- | VkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a
 -- display
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_16bit_storage.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_16bit_storage.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_16bit_storage.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_16bit_storage.hs
@@ -29,8 +29,8 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage
-  ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
-  , VkPhysicalDevice16BitStorageFeatures(..)
+  ( VkPhysicalDevice16BitStorageFeatures(..)
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs
@@ -25,16 +25,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -173,7 +173,11 @@
 -- 'VkAndroidSurfaceCreateInfoKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkCreateAndroidSurfaceKHR" vkCreateAndroidSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateAndroidSurfaceKHR" vkCreateAndroidSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | VkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a
 -- newly created Android surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_bind_memory2.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_bind_memory2.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_bind_memory2.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_bind_memory2.hs
@@ -34,29 +34,29 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
-  , VkResult(..)
+  ( VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
   ( VkImageCreateFlagBits(..)
-  , VkDeviceSize
   , VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core10.Memory
   ( VkDeviceMemory
   )
 import Graphics.Vulkan.Core10.MemoryManagement
-  ( VkImage
-  , VkBuffer
+  ( VkBuffer
+  , VkImage
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2
-  ( pattern VK_IMAGE_CREATE_ALIAS_BIT
-  , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
-  , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
+  ( VkBindBufferMemoryInfo(..)
   , VkBindImageMemoryInfo(..)
-  , vkBindImageMemory2
-  , VkBindBufferMemoryInfo(..)
   , vkBindBufferMemory2
+  , vkBindImageMemory2
+  , pattern VK_IMAGE_CREATE_ALIAS_BIT
+  , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
+  , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
@@ -36,10 +36,10 @@
   , VkImage
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation
-  ( pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
-  , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
-  , VkMemoryDedicatedAllocateInfo(..)
+  ( VkMemoryDedicatedAllocateInfo(..)
   , VkMemoryDedicatedRequirements(..)
+  , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
+  , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
@@ -43,8 +43,8 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkObjectType(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DescriptorSet
   ( VkDescriptorType(..)
@@ -64,17 +64,17 @@
   ( VkDescriptorSetLayout
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template
-  ( pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
-  , pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
-  , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
+  ( VkDescriptorUpdateTemplateCreateFlags(..)
+  , VkDescriptorUpdateTemplateCreateInfo(..)
   , VkDescriptorUpdateTemplateEntry(..)
-  , VkDescriptorUpdateTemplateCreateFlags(..)
   , VkDescriptorUpdateTemplateType(..)
-  , vkUpdateDescriptorSetWithTemplate
-  , vkDestroyDescriptorUpdateTemplate
   , VkDescriptorUpdateTemplate
-  , VkDescriptorUpdateTemplateCreateInfo(..)
   , vkCreateDescriptorUpdateTemplate
+  , vkDestroyDescriptorUpdateTemplate
+  , vkUpdateDescriptorSetWithTemplate
+  , pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
+  , pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
+  , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
   )
 import Graphics.Vulkan.Extensions.VK_EXT_debug_report
   ( VkDebugReportObjectTypeEXT(..)
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_device_group.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_device_group.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_device_group.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_device_group.hs
@@ -79,38 +79,38 @@
   ( VkCommandBuffer
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group
-  ( pattern VK_DEPENDENCY_DEVICE_GROUP_BIT
-  , pattern VK_PIPELINE_CREATE_DISPATCH_BASE
-  , pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
-  , pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
-  , pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
-  , pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
-  , pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
-  , pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT
-  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
-  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
-  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
-  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
-  , pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
-  , VkDeviceGroupBindSparseInfo(..)
-  , VkDeviceGroupSubmitInfo(..)
+  ( VkDeviceGroupBindSparseInfo(..)
   , VkDeviceGroupCommandBufferBeginInfo(..)
   , VkDeviceGroupRenderPassBeginInfo(..)
-  , VkMemoryAllocateFlagsInfo(..)
-  , VkMemoryAllocateFlags
+  , VkDeviceGroupSubmitInfo(..)
   , VkMemoryAllocateFlagBits(..)
+  , VkMemoryAllocateFlagsInfo(..)
   , VkPeerMemoryFeatureFlagBits(..)
+  , VkMemoryAllocateFlags
+  , VkPeerMemoryFeatureFlags
   , vkCmdDispatchBase
   , vkCmdSetDeviceMask
-  , VkPeerMemoryFeatureFlags
   , vkGetDeviceGroupPeerMemoryFeatures
+  , pattern VK_DEPENDENCY_DEVICE_GROUP_BIT
+  , pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
+  , pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
+  , pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT
+  , pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
+  , pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
+  , pattern VK_PIPELINE_CREATE_DISPATCH_BASE
+  , pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
+  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
+  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
+  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
+  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
+  , pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2
-  ( pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
-  , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
-  , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+  ( VkBindBufferMemoryDeviceGroupInfo(..)
   , VkBindImageMemoryDeviceGroupInfo(..)
-  , VkBindBufferMemoryDeviceGroupInfo(..)
+  , pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
+  , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+  , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_device_group_creation.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_device_group_creation.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_device_group_creation.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_device_group_creation.hs
@@ -39,23 +39,23 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
   ( VkMemoryHeapFlagBits(..)
-  , VkPhysicalDevice
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation
-  ( pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
-  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
-  , pattern VK_MAX_DEVICE_GROUP_SIZE
-  , VkDeviceGroupDeviceCreateInfo(..)
-  , VK_MAX_DEVICE_GROUP_SIZE
+  ( VkDeviceGroupDeviceCreateInfo(..)
   , VkPhysicalDeviceGroupProperties(..)
+  , VK_MAX_DEVICE_GROUP_SIZE
   , vkEnumeratePhysicalDeviceGroups
+  , pattern VK_MAX_DEVICE_GROUP_SIZE
+  , pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
+  , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_display.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_display.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_display.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_display.hs
@@ -51,20 +51,20 @@
   ( Word32
   )
 import Foreign.C.Types
-  ( CFloat(..)
-  , CChar(..)
+  ( CChar(..)
+  , CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -85,24 +85,24 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkResult(..)
   , VkObjectType(..)
+  , VkResult(..)
   , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkInstance
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
+  , VkInstance
   , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.Pipeline
-  ( VkOffset2D(..)
-  , VkExtent2D(..)
+  ( VkExtent2D(..)
+  , VkOffset2D(..)
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
   ( VkSurfaceTransformFlagBitsKHR(..)
-  , VkSurfaceTransformFlagsKHR
   , VkSurfaceKHR
+  , VkSurfaceTransformFlagsKHR
   )
 
 
@@ -299,7 +299,11 @@
 --
 -- 'VkDisplayPropertiesKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceDisplayPropertiesKHR" vkGetPhysicalDeviceDisplayPropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceDisplayPropertiesKHR" vkGetPhysicalDeviceDisplayPropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane
 -- properties
 --
@@ -351,7 +355,11 @@
 --
 -- 'VkDisplayPlanePropertiesKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" vkGetPhysicalDeviceDisplayPlanePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" vkGetPhysicalDeviceDisplayPlanePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult
 -- | vkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a
 -- plane supports
 --
@@ -415,7 +423,11 @@
 --
 -- 'VkDisplayKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetDisplayPlaneSupportedDisplaysKHR" vkGetDisplayPlaneSupportedDisplaysKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDisplayPlaneSupportedDisplaysKHR" vkGetDisplayPlaneSupportedDisplaysKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult
 -- | vkGetDisplayModePropertiesKHR - Query the set of mode properties
 -- supported by the display
 --
@@ -475,7 +487,11 @@
 --
 -- 'VkDisplayKHR', 'VkDisplayModePropertiesKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetDisplayModePropertiesKHR" vkGetDisplayModePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDisplayModePropertiesKHR" vkGetDisplayModePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult
 -- | vkCreateDisplayModeKHR - Create a display mode
 --
 -- = Parameters
@@ -529,7 +545,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'VkDisplayKHR', 'VkDisplayModeCreateInfoKHR', 'VkDisplayModeKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkCreateDisplayModeKHR" vkCreateDisplayModeKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDisplayModeKHR" vkCreateDisplayModeKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult
 -- | vkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and
 -- plane combination
 --
@@ -575,7 +595,11 @@
 --
 -- 'VkDisplayModeKHR', 'VkDisplayPlaneCapabilitiesKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetDisplayPlaneCapabilitiesKHR" vkGetDisplayPlaneCapabilitiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDisplayPlaneCapabilitiesKHR" vkGetDisplayPlaneCapabilitiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult
 -- | vkCreateDisplayPlaneSurfaceKHR - Create a
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' structure
 -- representing a display plane and mode
@@ -625,7 +649,11 @@
 -- 'VkDisplaySurfaceCreateInfoKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkCreateDisplayPlaneSurfaceKHR" vkCreateDisplayPlaneSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateDisplayPlaneSurfaceKHR" vkCreateDisplayPlaneSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | VkDisplayPropertiesKHR - Structure describing an available display
 -- device
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs
@@ -22,12 +22,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -36,8 +36,8 @@
 
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
   ( VkAllocationCallbacks(..)
@@ -47,8 +47,8 @@
   ( VkRect2D(..)
   )
 import Graphics.Vulkan.Extensions.VK_KHR_swapchain
-  ( VkSwapchainKHR
-  , VkSwapchainCreateInfoKHR(..)
+  ( VkSwapchainCreateInfoKHR(..)
+  , VkSwapchainKHR
   )
 
 
@@ -149,7 +149,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'
-foreign import ccall "vkCreateSharedSwapchainsKHR" vkCreateSharedSwapchainsKHR :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateSharedSwapchainsKHR" vkCreateSharedSwapchainsKHR :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult
 -- | VkDisplayPresentInfoKHR - Structure describing parameters of a queue
 -- presentation to a swapchain
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence.hs
@@ -31,11 +31,11 @@
   ( VkStructureType(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence
-  ( pattern VK_FENCE_IMPORT_TEMPORARY_BIT
-  , pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
-  , VkExportFenceCreateInfo(..)
-  , VkFenceImportFlags
+  ( VkExportFenceCreateInfo(..)
   , VkFenceImportFlagBits(..)
+  , VkFenceImportFlags
+  , pattern VK_FENCE_IMPORT_TEMPORARY_BIT
+  , pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities
   ( VkExternalFenceHandleTypeFlags
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs
@@ -45,21 +45,21 @@
   ( VkPhysicalDevice
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities
-  ( pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
-  , pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
-  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
-  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
-  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
-  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT
-  , pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
-  , VkExternalFenceFeatureFlags
-  , VkExternalFenceHandleTypeFlags
-  , VkExternalFenceFeatureFlagBits(..)
+  ( VkExternalFenceFeatureFlagBits(..)
   , VkExternalFenceHandleTypeFlagBits(..)
   , VkExternalFenceProperties(..)
   , VkPhysicalDeviceExternalFenceInfo(..)
+  , VkExternalFenceFeatureFlags
+  , VkExternalFenceHandleTypeFlags
   , vkGetPhysicalDeviceExternalFenceProperties
+  , pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
+  , pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
+  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT
+  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
+  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+  , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
+  , pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
@@ -24,12 +24,12 @@
   ( CInt(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -130,7 +130,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkFenceGetFdInfoKHR'
-foreign import ccall "vkGetFenceFdKHR" vkGetFenceFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetFenceFdKHR" vkGetFenceFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult
 -- | vkImportFenceFdKHR - Import a fence from a POSIX file descriptor
 --
 -- = Parameters
@@ -177,7 +181,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkImportFenceFdInfoKHR'
-foreign import ccall "vkImportFenceFdKHR" vkImportFenceFdKHR :: ("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkImportFenceFdKHR" vkImportFenceFdKHR :: ("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult
 -- | VkImportFenceFdInfoKHR - (None)
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
@@ -23,12 +23,12 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -56,8 +56,8 @@
   )
 import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32
   ( DWORD
-  , SECURITY_ATTRIBUTES
   , HANDLE
+  , SECURITY_ATTRIBUTES
   )
 
 
@@ -125,7 +125,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkFenceGetWin32HandleInfoKHR'
-foreign import ccall "vkGetFenceWin32HandleKHR" vkGetFenceWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetFenceWin32HandleKHR" vkGetFenceWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
 -- | vkImportFenceWin32HandleKHR - Import a fence from a Windows HANDLE
 --
 -- = Parameters
@@ -168,7 +172,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkImportFenceWin32HandleInfoKHR'
-foreign import ccall "vkImportFenceWin32HandleKHR" vkImportFenceWin32HandleKHR :: ("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkImportFenceWin32HandleKHR" vkImportFenceWin32HandleKHR :: ("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult
 -- | VkImportFenceWin32HandleInfoKHR - (None)
 --
 -- = Description
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory.hs
@@ -40,14 +40,14 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory
-  ( pattern VK_ERROR_INVALID_EXTERNAL_HANDLE
-  , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
-  , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
-  , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
-  , pattern VK_QUEUE_FAMILY_EXTERNAL
-  , VkExportMemoryAllocateInfo(..)
+  ( VkExportMemoryAllocateInfo(..)
   , VkExternalMemoryBufferCreateInfo(..)
   , VkExternalMemoryImageCreateInfo(..)
+  , pattern VK_ERROR_INVALID_EXTERNAL_HANDLE
+  , pattern VK_QUEUE_FAMILY_EXTERNAL
+  , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
+  , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
+  , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities
   ( VkExternalMemoryHandleTypeFlags
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
@@ -63,8 +63,8 @@
 
 
 import Graphics.Vulkan.Core10.Buffer
-  ( VkBufferUsageFlags
-  , VkBufferCreateFlags
+  ( VkBufferCreateFlags
+  , VkBufferUsageFlags
   )
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
@@ -75,34 +75,34 @@
   , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities
-  ( pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
-  , pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
+  ( VkExternalBufferProperties(..)
+  , VkExternalImageFormatProperties(..)
+  , VkExternalMemoryFeatureFlagBits(..)
+  , VkExternalMemoryHandleTypeFlagBits(..)
+  , VkExternalMemoryProperties(..)
+  , VkPhysicalDeviceExternalBufferInfo(..)
+  , VkPhysicalDeviceExternalImageFormatInfo(..)
+  , VkPhysicalDeviceIDProperties(..)
+  , VK_LUID_SIZE
+  , VkExternalMemoryFeatureFlags
+  , VkExternalMemoryHandleTypeFlags
+  , vkGetPhysicalDeviceExternalBufferProperties
   , pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
-  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
-  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
-  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
+  , pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
+  , pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
   , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
-  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
-  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
+  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
+  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
+  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
   , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
+  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
+  , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+  , pattern VK_LUID_SIZE
   , pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
   , pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
   , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-  , pattern VK_LUID_SIZE
-  , VK_LUID_SIZE
-  , VkPhysicalDeviceIDProperties(..)
-  , VkExternalImageFormatProperties(..)
-  , VkPhysicalDeviceExternalImageFormatInfo(..)
-  , VkExternalMemoryProperties(..)
-  , VkExternalMemoryFeatureFlags
-  , VkExternalMemoryHandleTypeFlags
-  , VkExternalMemoryFeatureFlagBits(..)
-  , VkExternalMemoryHandleTypeFlagBits(..)
-  , VkExternalBufferProperties(..)
-  , VkPhysicalDeviceExternalBufferInfo(..)
-  , vkGetPhysicalDeviceExternalBufferProperties
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
@@ -29,12 +29,12 @@
   ( CInt(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -118,7 +118,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMemoryGetFdInfoKHR'
-foreign import ccall "vkGetMemoryFdKHR" vkGetMemoryFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryFdKHR" vkGetMemoryFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult
 -- | vkGetMemoryFdPropertiesKHR - Get Properties of External Memory File
 -- Descriptors
 --
@@ -164,7 +168,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',
 -- 'VkMemoryFdPropertiesKHR'
-foreign import ccall "vkGetMemoryFdPropertiesKHR" vkGetMemoryFdPropertiesKHR :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryFdPropertiesKHR" vkGetMemoryFdPropertiesKHR :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult
 -- | VkImportMemoryFdInfoKHR - import memory created on the same physical
 -- device from a file descriptor
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
@@ -32,12 +32,12 @@
   ( CWchar
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -59,8 +59,8 @@
   )
 import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32
   ( DWORD
-  , SECURITY_ATTRIBUTES
   , HANDLE
+  , SECURITY_ATTRIBUTES
   )
 
 
@@ -128,7 +128,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkMemoryGetWin32HandleInfoKHR'
-foreign import ccall "vkGetMemoryWin32HandleKHR" vkGetMemoryWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryWin32HandleKHR" vkGetMemoryWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
 -- | vkGetMemoryWin32HandlePropertiesKHR - Get Properties of External Memory
 -- Win32 Handles
 --
@@ -174,7 +178,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',
 -- 'VkMemoryWin32HandlePropertiesKHR'
-foreign import ccall "vkGetMemoryWin32HandlePropertiesKHR" vkGetMemoryWin32HandlePropertiesKHR :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryWin32HandlePropertiesKHR" vkGetMemoryWin32HandlePropertiesKHR :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult
 -- | VkImportMemoryWin32HandleInfoKHR - import Win32 memory created on the
 -- same physical device
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore.hs
@@ -31,11 +31,11 @@
   ( VkStructureType(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore
-  ( pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
-  , pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
-  , VkExportSemaphoreCreateInfo(..)
-  , VkSemaphoreImportFlags
+  ( VkExportSemaphoreCreateInfo(..)
   , VkSemaphoreImportFlagBits(..)
+  , VkSemaphoreImportFlags
+  , pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
+  , pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities
   ( VkExternalSemaphoreHandleTypeFlags
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs
@@ -46,22 +46,22 @@
   ( VkPhysicalDevice
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities
-  ( pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
+  ( VkExternalSemaphoreFeatureFlagBits(..)
+  , VkExternalSemaphoreHandleTypeFlagBits(..)
+  , VkExternalSemaphoreProperties(..)
+  , VkPhysicalDeviceExternalSemaphoreInfo(..)
+  , VkExternalSemaphoreFeatureFlags
+  , VkExternalSemaphoreHandleTypeFlags
+  , vkGetPhysicalDeviceExternalSemaphoreProperties
   , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT
-  , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
+  , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
   , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
-  , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
-  , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
   , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
+  , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
+  , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+  , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
   , pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
   , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-  , VkExternalSemaphoreFeatureFlags
-  , VkExternalSemaphoreHandleTypeFlags
-  , VkExternalSemaphoreFeatureFlagBits(..)
-  , VkExternalSemaphoreHandleTypeFlagBits(..)
-  , VkExternalSemaphoreProperties(..)
-  , VkPhysicalDeviceExternalSemaphoreInfo(..)
-  , vkGetPhysicalDeviceExternalSemaphoreProperties
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
@@ -24,12 +24,12 @@
   ( CInt(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -125,7 +125,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkSemaphoreGetFdInfoKHR'
-foreign import ccall "vkGetSemaphoreFdKHR" vkGetSemaphoreFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetSemaphoreFdKHR" vkGetSemaphoreFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult
 -- | vkImportSemaphoreFdKHR - Import a semaphore from a POSIX file descriptor
 --
 -- = Parameters
@@ -172,7 +176,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkImportSemaphoreFdInfoKHR'
-foreign import ccall "vkImportSemaphoreFdKHR" vkImportSemaphoreFdKHR :: ("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkImportSemaphoreFdKHR" vkImportSemaphoreFdKHR :: ("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult
 -- | VkImportSemaphoreFdInfoKHR - Structure specifying POSIX file descriptor
 -- to import to a semaphore
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
@@ -25,16 +25,16 @@
   ( IsString
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -62,8 +62,8 @@
   )
 import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32
   ( DWORD
-  , SECURITY_ATTRIBUTES
   , HANDLE
+  , SECURITY_ATTRIBUTES
   )
 
 
@@ -134,7 +134,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkSemaphoreGetWin32HandleInfoKHR'
-foreign import ccall "vkGetSemaphoreWin32HandleKHR" vkGetSemaphoreWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetSemaphoreWin32HandleKHR" vkGetSemaphoreWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
 -- | vkImportSemaphoreWin32HandleKHR - Import a semaphore from a Windows
 -- HANDLE
 --
@@ -178,7 +182,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkImportSemaphoreWin32HandleInfoKHR'
-foreign import ccall "vkImportSemaphoreWin32HandleKHR" vkImportSemaphoreWin32HandleKHR :: ("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkImportSemaphoreWin32HandleKHR" vkImportSemaphoreWin32HandleKHR :: ("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult
 -- | VkImportSemaphoreWin32HandleInfoKHR - Structure specifying Windows
 -- handle to import to a semaphore
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
@@ -50,26 +50,26 @@
   )
 import Graphics.Vulkan.Core10.MemoryManagement
   ( VkMemoryRequirements(..)
-  , VkImage
   , VkBuffer
+  , VkImage
   )
 import Graphics.Vulkan.Core10.SparseResourceMemoryManagement
   ( VkSparseImageMemoryRequirements(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2
-  ( pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
-  , pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
-  , pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-  , pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
-  , pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
-  , VkSparseImageMemoryRequirements2(..)
-  , VkImageSparseMemoryRequirementsInfo2(..)
-  , vkGetImageSparseMemoryRequirements2
+  ( VkBufferMemoryRequirementsInfo2(..)
   , VkImageMemoryRequirementsInfo2(..)
-  , vkGetImageMemoryRequirements2
+  , VkImageSparseMemoryRequirementsInfo2(..)
   , VkMemoryRequirements2(..)
-  , VkBufferMemoryRequirementsInfo2(..)
+  , VkSparseImageMemoryRequirements2(..)
   , vkGetBufferMemoryRequirements2
+  , vkGetImageMemoryRequirements2
+  , vkGetImageSparseMemoryRequirements2
+  , pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
+  , pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
+  , pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+  , pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
+  , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
@@ -59,53 +59,53 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkStructureType(..)
+  ( VkFormat(..)
   , VkResult(..)
-  , VkFormat(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkSampleCountFlagBits(..)
+  ( VkFormatProperties(..)
+  , VkImageFormatProperties(..)
+  , VkImageTiling(..)
+  , VkImageType(..)
+  , VkPhysicalDeviceFeatures(..)
   , VkPhysicalDeviceMemoryProperties(..)
+  , VkPhysicalDeviceProperties(..)
   , VkQueueFamilyProperties(..)
+  , VkSampleCountFlagBits(..)
   , VkImageCreateFlags
   , VkImageUsageFlags
-  , VkImageTiling(..)
-  , VkImageType(..)
-  , VkImageFormatProperties(..)
-  , VkFormatProperties(..)
-  , VkPhysicalDeviceProperties(..)
-  , VkPhysicalDeviceFeatures(..)
   , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.SparseResourceMemoryManagement
   ( VkSparseImageFormatProperties(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2
-  ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-  , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
-  , pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
-  , pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
-  , pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
-  , VkSparseImageFormatProperties2(..)
-  , VkPhysicalDeviceSparseImageFormatInfo2(..)
-  , vkGetPhysicalDeviceSparseImageFormatProperties2
-  , VkPhysicalDeviceMemoryProperties2(..)
-  , vkGetPhysicalDeviceMemoryProperties2
-  , VkQueueFamilyProperties2(..)
-  , vkGetPhysicalDeviceQueueFamilyProperties2
+  ( VkFormatProperties2(..)
   , VkImageFormatProperties2(..)
+  , VkPhysicalDeviceFeatures2(..)
   , VkPhysicalDeviceImageFormatInfo2(..)
-  , vkGetPhysicalDeviceImageFormatProperties2
-  , VkFormatProperties2(..)
-  , vkGetPhysicalDeviceFormatProperties2
+  , VkPhysicalDeviceMemoryProperties2(..)
   , VkPhysicalDeviceProperties2(..)
-  , vkGetPhysicalDeviceProperties2
-  , VkPhysicalDeviceFeatures2(..)
+  , VkPhysicalDeviceSparseImageFormatInfo2(..)
+  , VkQueueFamilyProperties2(..)
+  , VkSparseImageFormatProperties2(..)
   , vkGetPhysicalDeviceFeatures2
+  , vkGetPhysicalDeviceFormatProperties2
+  , vkGetPhysicalDeviceImageFormatProperties2
+  , vkGetPhysicalDeviceMemoryProperties2
+  , vkGetPhysicalDeviceProperties2
+  , vkGetPhysicalDeviceQueueFamilyProperties2
+  , vkGetPhysicalDeviceSparseImageFormatProperties2
+  , pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2
+  , pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+  , pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
+  , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
@@ -26,12 +26,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -46,8 +46,8 @@
   ( VkPhysicalDevice
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
-  ( VkSurfaceFormatKHR(..)
-  , VkSurfaceCapabilitiesKHR(..)
+  ( VkSurfaceCapabilitiesKHR(..)
+  , VkSurfaceFormatKHR(..)
   , VkSurfaceKHR
   )
 
@@ -119,7 +119,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceSurfaceInfo2KHR', 'VkSurfaceCapabilities2KHR'
-foreign import ccall "vkGetPhysicalDeviceSurfaceCapabilities2KHR" vkGetPhysicalDeviceSurfaceCapabilities2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfaceCapabilities2KHR" vkGetPhysicalDeviceSurfaceCapabilities2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult
 -- | vkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by
 -- surface
 --
@@ -189,7 +193,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPhysicalDeviceSurfaceInfo2KHR', 'VkSurfaceFormat2KHR'
-foreign import ccall "vkGetPhysicalDeviceSurfaceFormats2KHR" vkGetPhysicalDeviceSurfaceFormats2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfaceFormats2KHR" vkGetPhysicalDeviceSurfaceFormats2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult
 -- | VkPhysicalDeviceSurfaceInfo2KHR - Structure specifying a surface and
 -- related swapchain creation parameters
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs
@@ -18,12 +18,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs
@@ -20,12 +20,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance1.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance1.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance1.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance1.hs
@@ -31,17 +31,17 @@
   ( VkResult(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkImageCreateFlagBits(..)
-  , VkFormatFeatureFlagBits(..)
+  ( VkFormatFeatureFlagBits(..)
+  , VkImageCreateFlagBits(..)
   , VkDevice
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1
-  ( pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
+  ( VkCommandPoolTrimFlags(..)
+  , vkTrimCommandPool
+  , pattern VK_ERROR_OUT_OF_POOL_MEMORY
   , pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT
   , pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
-  , pattern VK_ERROR_OUT_OF_POOL_MEMORY
-  , VkCommandPoolTrimFlags(..)
-  , vkTrimCommandPool
+  , pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance2.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance2.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance2.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance2.hs
@@ -62,25 +62,25 @@
   ( VkImageAspectFlags
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2
-  ( pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
-  , pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
-  , pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
-  , pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
+  ( VkImageViewUsageCreateInfo(..)
+  , VkInputAttachmentAspectReference(..)
+  , VkPhysicalDevicePointClippingProperties(..)
+  , VkPipelineTessellationDomainOriginStateCreateInfo(..)
+  , VkPointClippingBehavior(..)
+  , VkRenderPassInputAttachmentAspectCreateInfo(..)
+  , VkTessellationDomainOrigin(..)
+  , pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
+  , pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT
   , pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
   , pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-  , pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+  , pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
+  , pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
   , pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
-  , pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
   , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-  , pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT
-  , pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
-  , VkPipelineTessellationDomainOriginStateCreateInfo(..)
-  , VkImageViewUsageCreateInfo(..)
-  , VkPhysicalDevicePointClippingProperties(..)
-  , VkRenderPassInputAttachmentAspectCreateInfo(..)
-  , VkInputAttachmentAspectReference(..)
-  , VkTessellationDomainOrigin(..)
-  , VkPointClippingBehavior(..)
+  , pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+  , pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+  , pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
+  , pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance3.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance3.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance3.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_maintenance3.hs
@@ -39,15 +39,15 @@
   ( VkDescriptorSetLayoutCreateInfo(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkDevice
+  ( VkDevice
+  , VkDeviceSize
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3
-  ( pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+  ( VkDescriptorSetLayoutSupport(..)
   , VkPhysicalDeviceMaintenance3Properties(..)
-  , VkDescriptorSetLayoutSupport(..)
   , vkGetDescriptorSetLayoutSupport
+  , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs
@@ -30,16 +30,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -65,9 +65,9 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
   ( VkSurfaceKHR
@@ -156,7 +156,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'VkMirSurfaceCreateInfoKHR',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkCreateMirSurfaceKHR" vkCreateMirSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateMirSurfaceKHR" vkCreateMirSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceMirPresentationSupportKHR - Query physical device for
 -- presentation to Mir
 --
@@ -189,7 +193,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceMirPresentationSupportKHR" vkGetPhysicalDeviceMirPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceMirPresentationSupportKHR" vkGetPhysicalDeviceMirPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32
 -- | VkMirSurfaceCreateInfoKHR - Structure specifying parameters of a newly
 -- created Mir surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_multiview.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_multiview.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_multiview.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_multiview.hs
@@ -45,13 +45,13 @@
   ( VkDependencyFlagBits(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview
-  ( pattern VK_DEPENDENCY_VIEW_LOCAL_BIT
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
+  ( VkPhysicalDeviceMultiviewFeatures(..)
+  , VkPhysicalDeviceMultiviewProperties(..)
+  , VkRenderPassMultiviewCreateInfo(..)
+  , pattern VK_DEPENDENCY_VIEW_LOCAL_BIT
   , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
   , pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
-  , VkRenderPassMultiviewCreateInfo(..)
-  , VkPhysicalDeviceMultiviewProperties(..)
-  , VkPhysicalDeviceMultiviewFeatures(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs
@@ -24,12 +24,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -40,8 +40,8 @@
   ( VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DescriptorSet
-  ( VkWriteDescriptorSet(..)
-  , VkDescriptorSetLayoutCreateFlagBits(..)
+  ( VkDescriptorSetLayoutCreateFlagBits(..)
+  , VkWriteDescriptorSet(..)
   )
 import Graphics.Vulkan.Core10.Pass
   ( VkPipelineBindPoint(..)
@@ -53,8 +53,8 @@
   ( VkCommandBuffer
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template
-  ( VkDescriptorUpdateTemplate
-  , VkDescriptorUpdateTemplateType(..)
+  ( VkDescriptorUpdateTemplateType(..)
+  , VkDescriptorUpdateTemplate
   )
 
 
@@ -212,7 +212,11 @@
 -- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',
 -- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet'
-foreign import ccall "vkCmdPushDescriptorSetKHR" vkCmdPushDescriptorSetKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdPushDescriptorSetKHR" vkCmdPushDescriptorSetKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ()
 -- | vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a
 -- command buffer using a descriptor update template
 --
@@ -346,7 +350,11 @@
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',
 -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'
-foreign import ccall "vkCmdPushDescriptorSetWithTemplateKHR" vkCmdPushDescriptorSetWithTemplateKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdPushDescriptorSetWithTemplateKHR" vkCmdPushDescriptorSetWithTemplateKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()
 -- | VkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push
 -- descriptor limits that can be supported by an implementation
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
@@ -105,16 +105,16 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkObjectType(..)
-  , VkBool32(..)
+  ( VkBool32(..)
   , VkFormat(..)
-  , VkStructureType(..)
+  , VkObjectType(..)
   , VkResult(..)
+  , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkFormatFeatureFlagBits(..)
+  ( VkAllocationCallbacks(..)
+  , VkFormatFeatureFlagBits(..)
   , VkImageCreateFlagBits(..)
-  , VkAllocationCallbacks(..)
   , VkDevice
   )
 import Graphics.Vulkan.Core10.ImageView
@@ -127,79 +127,79 @@
   ( VkImageAspectFlagBits(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion
-  ( pattern VK_CHROMA_LOCATION_MIDPOINT
+  ( VkBindImagePlaneMemoryInfo(..)
+  , VkChromaLocation(..)
+  , VkImagePlaneMemoryRequirementsInfo(..)
+  , VkPhysicalDeviceSamplerYcbcrConversionFeatures(..)
+  , VkSamplerYcbcrConversionCreateInfo(..)
+  , VkSamplerYcbcrConversionImageFormatProperties(..)
+  , VkSamplerYcbcrConversionInfo(..)
+  , VkSamplerYcbcrModelConversion(..)
+  , VkSamplerYcbcrRange(..)
+  , VkSamplerYcbcrConversion
+  , vkCreateSamplerYcbcrConversion
+  , vkDestroySamplerYcbcrConversion
   , pattern VK_CHROMA_LOCATION_COSITED_EVEN
-  , pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
-  , pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL
-  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
-  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601
-  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709
-  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
-  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
+  , pattern VK_CHROMA_LOCATION_MIDPOINT
+  , pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
+  , pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
+  , pattern VK_FORMAT_B16G16R16G16_422_UNORM
+  , pattern VK_FORMAT_B8G8R8G8_422_UNORM
   , pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
   , pattern VK_FORMAT_FEATURE_DISJOINT_BIT
-  , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+  , pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
   , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-  , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+  , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
   , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-  , pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
-  , pattern VK_IMAGE_CREATE_DISJOINT_BIT
-  , pattern VK_IMAGE_ASPECT_PLANE_2_BIT
-  , pattern VK_IMAGE_ASPECT_PLANE_1_BIT
-  , pattern VK_IMAGE_ASPECT_PLANE_0_BIT
-  , pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM
-  , pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM
-  , pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM
-  , pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM
-  , pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM
-  , pattern VK_FORMAT_B16G16R16G16_422_UNORM
-  , pattern VK_FORMAT_G16B16G16R16_422_UNORM
-  , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
-  , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
-  , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
-  , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
-  , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
-  , pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
-  , pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
-  , pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
-  , pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16
-  , pattern VK_FORMAT_R12X4_UNORM_PACK16
-  , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
-  , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
-  , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
+  , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+  , pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
   , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
+  , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
   , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
-  , pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
-  , pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
+  , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
+  , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
+  , pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
+  , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
+  , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
+  , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
+  , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
+  , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
+  , pattern VK_FORMAT_G16B16G16R16_422_UNORM
+  , pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM
+  , pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM
+  , pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM
+  , pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM
+  , pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM
+  , pattern VK_FORMAT_G8B8G8R8_422_UNORM
+  , pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
+  , pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
+  , pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
+  , pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM
+  , pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM
   , pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
   , pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16
   , pattern VK_FORMAT_R10X6_UNORM_PACK16
-  , pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM
-  , pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
-  , pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM
-  , pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
-  , pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
-  , pattern VK_FORMAT_B8G8R8G8_422_UNORM
-  , pattern VK_FORMAT_G8B8G8R8_422_UNORM
+  , pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
+  , pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16
+  , pattern VK_FORMAT_R12X4_UNORM_PACK16
+  , pattern VK_IMAGE_ASPECT_PLANE_0_BIT
+  , pattern VK_IMAGE_ASPECT_PLANE_1_BIT
+  , pattern VK_IMAGE_ASPECT_PLANE_2_BIT
+  , pattern VK_IMAGE_CREATE_DISJOINT_BIT
   , pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
-  , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-  , pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
+  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
+  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
+  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601
+  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709
+  , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
+  , pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL
+  , pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
   , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
-  , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
+  , pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
   , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
-  , VkSamplerYcbcrConversionImageFormatProperties(..)
-  , VkPhysicalDeviceSamplerYcbcrConversionFeatures(..)
-  , VkImagePlaneMemoryRequirementsInfo(..)
-  , VkBindImagePlaneMemoryInfo(..)
-  , VkSamplerYcbcrConversionInfo(..)
-  , VkChromaLocation(..)
-  , VkSamplerYcbcrRange(..)
-  , VkSamplerYcbcrModelConversion(..)
-  , vkDestroySamplerYcbcrConversion
-  , VkSamplerYcbcrConversion
-  , VkSamplerYcbcrConversionCreateInfo(..)
-  , vkCreateSamplerYcbcrConversion
+  , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+  , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
   )
 import Graphics.Vulkan.Extensions.VK_EXT_debug_report
   ( VkDebugReportObjectTypeEXT(..)
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs
@@ -21,12 +21,12 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -38,8 +38,8 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkImageUsageFlags
-  , VkDevice
+  ( VkDevice
+  , VkImageUsageFlags
   )
 import Graphics.Vulkan.Core10.Image
   ( VkImageLayout(..)
@@ -113,7 +113,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'
-foreign import ccall "vkGetSwapchainStatusKHR" vkGetSwapchainStatusKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetSwapchainStatusKHR" vkGetSwapchainStatusKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult
 -- | VkSharedPresentSurfaceCapabilitiesKHR - structure describing
 -- capabilities of a surface for shared presentation
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs
@@ -62,16 +62,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -91,17 +91,17 @@
 
 
 import Graphics.Vulkan.Core10.Core
-  ( VkFormat(..)
-  , VkBool32(..)
+  ( VkBool32(..)
+  , VkFormat(..)
   , VkObjectType(..)
   , VkResult(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkImageUsageFlags
-  , VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
+  , VkImageUsageFlags
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.Pipeline
   ( VkExtent2D(..)
@@ -700,7 +700,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance', 'VkSurfaceKHR'
-foreign import ccall "vkDestroySurfaceKHR" vkDestroySurfaceKHR :: ("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroySurfaceKHR" vkDestroySurfaceKHR :: ("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is
 -- supported
 --
@@ -749,7 +753,11 @@
 -- @VkBool32@,
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkSurfaceKHR'
-foreign import ccall "vkGetPhysicalDeviceSurfaceSupportKHR" vkGetPhysicalDeviceSurfaceSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfaceSupportKHR" vkGetPhysicalDeviceSurfaceSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult
 -- | vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities
 --
 -- = Parameters
@@ -792,7 +800,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkSurfaceCapabilitiesKHR', 'VkSurfaceKHR'
-foreign import ccall "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" vkGetPhysicalDeviceSurfaceCapabilitiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" vkGetPhysicalDeviceSurfaceCapabilitiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by
 -- surface
 --
@@ -861,7 +873,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkSurfaceFormatKHR', 'VkSurfaceKHR'
-foreign import ccall "vkGetPhysicalDeviceSurfaceFormatsKHR" vkGetPhysicalDeviceSurfaceFormatsKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfaceFormatsKHR" vkGetPhysicalDeviceSurfaceFormatsKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation
 -- modes
 --
@@ -927,7 +943,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'VkPresentModeKHR', 'VkSurfaceKHR'
-foreign import ccall "vkGetPhysicalDeviceSurfacePresentModesKHR" vkGetPhysicalDeviceSurfacePresentModesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceSurfacePresentModesKHR" vkGetPhysicalDeviceSurfacePresentModesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult
 -- | VkSurfaceCapabilitiesKHR - Structure describing capabilities of a
 -- surface
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs
@@ -67,16 +67,16 @@
   , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -102,15 +102,15 @@
   ( VkBool32(..)
   , VkFormat(..)
   , VkObjectType(..)
-  , VkStructureType(..)
   , VkResult(..)
+  , VkStructureType(..)
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkImageUsageFlags
-  , VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkImageUsageFlags
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.Image
   ( VkImageLayout(..)
@@ -123,18 +123,18 @@
   , VkRect2D(..)
   )
 import Graphics.Vulkan.Core10.Queue
-  ( VkQueue
-  , VkFence
+  ( VkFence
+  , VkQueue
   , VkSemaphore
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation
   ( VK_MAX_DEVICE_GROUP_SIZE
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
-  ( VkPresentModeKHR(..)
+  ( VkColorSpaceKHR(..)
   , VkCompositeAlphaFlagBitsKHR(..)
+  , VkPresentModeKHR(..)
   , VkSurfaceTransformFlagBitsKHR(..)
-  , VkColorSpaceKHR(..)
   , VkSurfaceKHR
   )
 
@@ -402,7 +402,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkSwapchainCreateInfoKHR', 'VkSwapchainKHR'
-foreign import ccall "vkCreateSwapchainKHR" vkCreateSwapchainKHR :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateSwapchainKHR" vkCreateSwapchainKHR :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult
 -- | vkDestroySwapchainKHR - Destroy a swapchain object
 --
 -- = Parameters
@@ -471,7 +475,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSwapchainKHR'
-foreign import ccall "vkDestroySwapchainKHR" vkDestroySwapchainKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroySwapchainKHR" vkDestroySwapchainKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkGetSwapchainImagesKHR - Obtain the array of presentable images
 -- associated with a swapchain
 --
@@ -536,7 +544,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkSwapchainKHR'
-foreign import ccall "vkGetSwapchainImagesKHR" vkGetSwapchainImagesKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetSwapchainImagesKHR" vkGetSwapchainImagesKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult
 -- | vkAcquireNextImageKHR - Retrieve the index of the next available
 -- presentable image
 --
@@ -647,7 +659,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Queue.VkFence',
 -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', 'VkSwapchainKHR'
-foreign import ccall "vkAcquireNextImageKHR" vkAcquireNextImageKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkAcquireNextImageKHR" vkAcquireNextImageKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult
 -- | vkQueuePresentKHR - Queue an image for presentation
 --
 -- = Parameters
@@ -765,7 +781,11 @@
 -- = See Also
 --
 -- 'VkPresentInfoKHR', 'Graphics.Vulkan.Core10.Queue.VkQueue'
-foreign import ccall "vkQueuePresentKHR" vkQueuePresentKHR :: ("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkQueuePresentKHR" vkQueuePresentKHR :: ("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult
 -- | vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from
 -- other physical devices
 --
@@ -798,7 +818,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceGroupPresentCapabilitiesKHR'
-foreign import ccall "vkGetDeviceGroupPresentCapabilitiesKHR" vkGetDeviceGroupPresentCapabilitiesKHR :: ("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceGroupPresentCapabilitiesKHR" vkGetDeviceGroupPresentCapabilitiesKHR :: ("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult
 -- | vkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for
 -- a surface
 --
@@ -852,7 +876,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkDeviceGroupPresentModeFlagsKHR',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkGetDeviceGroupSurfacePresentModesKHR" vkGetDeviceGroupSurfacePresentModesKHR :: ("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetDeviceGroupSurfacePresentModesKHR" vkGetDeviceGroupSurfacePresentModesKHR :: ("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult
 -- | vkAcquireNextImage2KHR - Retrieve the index of the next available
 -- presentable image
 --
@@ -912,7 +940,11 @@
 --
 -- 'VkAcquireNextImageInfoKHR',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'
-foreign import ccall "vkAcquireNextImage2KHR" vkAcquireNextImage2KHR :: ("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkAcquireNextImage2KHR" vkAcquireNextImage2KHR :: ("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult
 -- | vkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a
 -- surface on a physical device
 --
@@ -982,7 +1014,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
 -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkGetPhysicalDevicePresentRectanglesKHR" vkGetPhysicalDevicePresentRectanglesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDevicePresentRectanglesKHR" vkGetPhysicalDevicePresentRectanglesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult
 -- | VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly
 -- created swapchain object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_variable_pointers.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_variable_pointers.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_variable_pointers.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_variable_pointers.hs
@@ -29,8 +29,8 @@
   , VkStructureType(..)
   )
 import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers
-  ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-  , VkPhysicalDeviceVariablePointerFeatures(..)
+  ( VkPhysicalDeviceVariablePointerFeatures(..)
+  , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs
@@ -30,16 +30,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -65,9 +65,9 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
   ( VkSurfaceKHR
@@ -156,7 +156,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',
 -- 'VkWaylandSurfaceCreateInfoKHR'
-foreign import ccall "vkCreateWaylandSurfaceKHR" vkCreateWaylandSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateWaylandSurfaceKHR" vkCreateWaylandSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device
 -- for presentation to Wayland
 --
@@ -189,7 +193,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceWaylandPresentationSupportKHR" vkGetPhysicalDeviceWaylandPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceWaylandPresentationSupportKHR" vkGetPhysicalDeviceWaylandPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32
 -- | VkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a
 -- newly created Wayland surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
@@ -15,16 +15,16 @@
   ( IsString
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs
@@ -30,16 +30,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -65,9 +65,9 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
   ( VkSurfaceKHR
@@ -156,7 +156,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',
 -- 'VkWin32SurfaceCreateInfoKHR'
-foreign import ccall "vkCreateWin32SurfaceKHR" vkCreateWin32SurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateWin32SurfaceKHR" vkCreateWin32SurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceWin32PresentationSupportKHR - query queue family
 -- support for presentation on a Win32 display
 --
@@ -184,7 +188,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceWin32PresentationSupportKHR" vkGetPhysicalDeviceWin32PresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceWin32PresentationSupportKHR" vkGetPhysicalDeviceWin32PresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32
 -- | VkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly
 -- created Win32 surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs
@@ -31,16 +31,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -66,9 +66,9 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
   ( VkSurfaceKHR
@@ -159,7 +159,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',
 -- 'VkXcbSurfaceCreateInfoKHR'
-foreign import ccall "vkCreateXcbSurfaceKHR" vkCreateXcbSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateXcbSurfaceKHR" vkCreateXcbSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceXcbPresentationSupportKHR - Query physical device for
 -- presentation to X11 server using XCB
 --
@@ -192,7 +196,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceXcbPresentationSupportKHR" vkGetPhysicalDeviceXcbPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceXcbPresentationSupportKHR" vkGetPhysicalDeviceXcbPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32
 -- | VkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly
 -- created Xcb surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs b/src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs
@@ -32,16 +32,16 @@
   , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -67,9 +67,9 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkInstance
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Extensions.VK_KHR_surface
   ( VkSurfaceKHR
@@ -160,7 +160,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',
 -- 'VkXlibSurfaceCreateInfoKHR'
-foreign import ccall "vkCreateXlibSurfaceKHR" vkCreateXlibSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateXlibSurfaceKHR" vkCreateXlibSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | vkGetPhysicalDeviceXlibPresentationSupportKHR - Query physical device
 -- for presentation to X11 server using Xlib
 --
@@ -194,7 +198,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceXlibPresentationSupportKHR" vkGetPhysicalDeviceXlibPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceXlibPresentationSupportKHR" vkGetPhysicalDeviceXlibPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32
 -- | VkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly
 -- created Xlib surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs b/src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs
@@ -24,16 +24,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -144,7 +144,11 @@
 -- 'VkIOSSurfaceCreateInfoMVK',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkCreateIOSSurfaceMVK" vkCreateIOSSurfaceMVK :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateIOSSurfaceMVK" vkCreateIOSSurfaceMVK :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | VkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly
 -- created iOS surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs b/src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs
@@ -24,16 +24,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -145,7 +145,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'VkMacOSSurfaceCreateInfoMVK',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'
-foreign import ccall "vkCreateMacOSSurfaceMVK" vkCreateMacOSSurfaceMVK :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateMacOSSurfaceMVK" vkCreateMacOSSurfaceMVK :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | VkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly
 -- created macOS surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs b/src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs
@@ -24,16 +24,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -159,7 +159,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',
 -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',
 -- 'VkViSurfaceCreateInfoNN'
-foreign import ccall "vkCreateViSurfaceNN" vkCreateViSurfaceNN :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateViSurfaceNN" vkCreateViSurfaceNN :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult
 -- | VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly
 -- created VI surface object
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs b/src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs
@@ -87,16 +87,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -120,8 +120,8 @@
   )
 import Graphics.Vulkan.Core10.Core
   ( VkBool32(..)
-  , VkResult(..)
   , VkObjectType(..)
+  , VkResult(..)
   , VkStructureType(..)
   , VkFlags
   )
@@ -129,28 +129,28 @@
   ( VkDescriptorSet
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkDeviceSize
-  , VkPhysicalDevice
-  , VkAllocationCallbacks(..)
+  ( VkAllocationCallbacks(..)
   , VkDevice
+  , VkDeviceSize
+  , VkPhysicalDevice
   )
 import Graphics.Vulkan.Core10.MemoryManagement
   ( VkBuffer
   )
 import Graphics.Vulkan.Core10.Pass
-  ( VkPipelineBindPoint(..)
-  , VkAccessFlagBits(..)
+  ( VkAccessFlagBits(..)
+  , VkPipelineBindPoint(..)
   )
 import Graphics.Vulkan.Core10.Pipeline
-  ( VkPipelineLayout
-  , VkPipeline
+  ( VkPipeline
+  , VkPipelineLayout
   )
 import Graphics.Vulkan.Core10.PipelineLayout
   ( VkShaderStageFlags
   )
 import Graphics.Vulkan.Core10.Queue
-  ( VkCommandBuffer
-  , VkPipelineStageFlagBits(..)
+  ( VkPipelineStageFlagBits(..)
+  , VkCommandBuffer
   )
 
 
@@ -511,7 +511,11 @@
 --
 -- 'VkCmdProcessCommandsInfoNVX',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdProcessCommandsNVX" vkCmdProcessCommandsNVX :: ("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdProcessCommandsNVX" vkCmdProcessCommandsNVX :: ("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ()
 -- | vkCmdReserveSpaceForCommandsNVX - Perform a reservation of command
 -- buffer space
 --
@@ -573,7 +577,11 @@
 --
 -- 'VkCmdReserveSpaceForCommandsInfoNVX',
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'
-foreign import ccall "vkCmdReserveSpaceForCommandsNVX" vkCmdReserveSpaceForCommandsNVX :: ("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdReserveSpaceForCommandsNVX" vkCmdReserveSpaceForCommandsNVX :: ("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ()
 -- | vkCreateIndirectCommandsLayoutNVX - Create an indirect command layout
 -- object
 --
@@ -622,7 +630,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkIndirectCommandsLayoutCreateInfoNVX', 'VkIndirectCommandsLayoutNVX'
-foreign import ccall "vkCreateIndirectCommandsLayoutNVX" vkCreateIndirectCommandsLayoutNVX :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateIndirectCommandsLayoutNVX" vkCreateIndirectCommandsLayoutNVX :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult
 -- | vkDestroyIndirectCommandsLayoutNVX - Destroy a object table
 --
 -- = Parameters
@@ -665,7 +677,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkIndirectCommandsLayoutNVX'
-foreign import ccall "vkDestroyIndirectCommandsLayoutNVX" vkDestroyIndirectCommandsLayoutNVX :: ("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyIndirectCommandsLayoutNVX" vkDestroyIndirectCommandsLayoutNVX :: ("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkCreateObjectTableNVX - Create an object table
 --
 -- = Parameters
@@ -712,7 +728,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkObjectTableCreateInfoNVX', 'VkObjectTableNVX'
-foreign import ccall "vkCreateObjectTableNVX" vkCreateObjectTableNVX :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCreateObjectTableNVX" vkCreateObjectTableNVX :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult
 -- | vkDestroyObjectTableNVX - Destroy a object table
 --
 -- = Parameters
@@ -758,7 +778,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkObjectTableNVX'
-foreign import ccall "vkDestroyObjectTableNVX" vkDestroyObjectTableNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkDestroyObjectTableNVX" vkDestroyObjectTableNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
 -- | vkRegisterObjectsNVX - Register resource bindings in an object table
 --
 -- = Parameters
@@ -827,7 +851,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkObjectTableEntryNVX', 'VkObjectTableNVX'
-foreign import ccall "vkRegisterObjectsNVX" vkRegisterObjectsNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkRegisterObjectsNVX" vkRegisterObjectsNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult
 -- | vkUnregisterObjectsNVX - Unregister resource bindings in an object table
 --
 -- = Parameters
@@ -891,7 +919,11 @@
 --
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'VkObjectEntryTypeNVX', 'VkObjectTableNVX'
-foreign import ccall "vkUnregisterObjectsNVX" vkUnregisterObjectsNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkUnregisterObjectsNVX" vkUnregisterObjectsNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult
 -- | vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - Returns
 -- device-generated commands related properties of a physical device
 --
@@ -923,7 +955,11 @@
 -- 'VkDeviceGeneratedCommandsFeaturesNVX',
 -- 'VkDeviceGeneratedCommandsLimitsNVX',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ()
 -- | VkDeviceGeneratedCommandsFeaturesNVX - Structure specifying physical
 -- device support
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs b/src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
@@ -17,12 +17,12 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs b/src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
@@ -26,12 +26,12 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -141,7 +141,11 @@
 -- = See Also
 --
 -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkViewportWScalingNV'
-foreign import ccall "vkCmdSetViewportWScalingNV" vkCmdSetViewportWScalingNV :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ()
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkCmdSetViewportWScalingNV" vkCmdSetViewportWScalingNV :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ()
 -- | VkViewportWScalingNV - Structure specifying a viewport
 --
 -- = See Also
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs b/src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
@@ -19,12 +19,12 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs b/src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs
@@ -17,12 +17,12 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs b/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
@@ -33,16 +33,16 @@
   ( IsString
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -67,13 +67,13 @@
   , VkFlags
   )
 import Graphics.Vulkan.Core10.DeviceInitialization
-  ( VkImageFormatProperties(..)
-  , VkImageCreateFlagBits(..)
+  ( VkImageCreateFlagBits(..)
+  , VkImageFormatProperties(..)
+  , VkImageTiling(..)
+  , VkImageType(..)
   , VkImageUsageFlagBits(..)
   , VkImageCreateFlags
   , VkImageUsageFlags
-  , VkImageTiling(..)
-  , VkImageType(..)
   , VkPhysicalDevice
   )
 
@@ -275,7 +275,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
-foreign import ccall "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" vkGetPhysicalDeviceExternalImageFormatPropertiesNV :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" vkGetPhysicalDeviceExternalImageFormatPropertiesNV :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult
 -- | VkExternalImageFormatPropertiesNV - Structure specifying external image
 -- format properties
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs b/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs
@@ -26,12 +26,12 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import Graphics.Vulkan.NamedType
   ( (:::)
@@ -126,7 +126,11 @@
 -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
 -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',
 -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV'
-foreign import ccall "vkGetMemoryWin32HandleNV" vkGetMemoryWin32HandleNV :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "vkGetMemoryWin32HandleNV" vkGetMemoryWin32HandleNV :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult
 -- | VkImportMemoryWin32HandleInfoNV - import Win32 memory created on the
 -- same physical device
 --
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs b/src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
@@ -24,16 +24,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs b/src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
@@ -35,16 +35,16 @@
   ( CFloat(..)
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs b/src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
@@ -37,16 +37,16 @@
   ( Word32
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 import GHC.Read
-  ( expectP
-  , choose
+  ( choose
+  , expectP
   )
 import Text.ParserCombinators.ReadPrec
   ( (+++)
diff --git a/src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs b/src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs
--- a/src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs
+++ b/src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs
@@ -15,16 +15,16 @@
   ( IsString
   )
 import Data.Word
-  ( Word64
-  , Word32
+  ( Word32
+  , Word64
   )
 import Foreign.Ptr
-  ( plusPtr
-  , Ptr
+  ( Ptr
+  , plusPtr
   )
 import Foreign.Storable
-  ( Storable(..)
-  , Storable
+  ( Storable
+  , Storable(..)
   )
 
 
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -2,7 +2,7 @@
 -- Any changes made here will be overwritten when 'generate' is run
 -- again.
 name:                vulkan
-version:             2.0.0.1
+version:             2.1.0.0
 synopsis:            Bindings to the Vulkan graphics API.
 description:         Please see readme.md
 homepage:            http://github.com/expipiplus1/vulkan#readme
@@ -20,42 +20,69 @@
 flag xlib
     description:
       Enable xlib specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag xlib_xrandr
     description:
       Enable xlib_xrandr specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag xcb
     description:
       Enable xcb specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag wayland
     description:
       Enable wayland specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag mir
     description:
       Enable mir specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag android
     description:
       Enable android specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag win32
     description:
       Enable win32 specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag vi
     description:
       Enable vi specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag ios
     description:
       Enable ios specific extensions
-    default: False
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
 flag macos
     description:
       Enable macos specific extensions
+    -- These are on by default, if lazy-loading or manual dynamic loading
+    -- is used then it shouldn't be a problem exposing these.
+    default: True
+
+flag safe-foreign-calls
+    description:
+      Do not mark foreign imports as 'unsafe'. This means that
+      callbacks from Vulkan to Haskell will work. If you are using
+      these then make sure this flag is enabled.
     default: False
 
 library
@@ -216,10 +243,14 @@
                      , Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties
                      , Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
                      , Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned
+                     , Graphics.Vulkan.Dynamic
                      , Graphics.Vulkan
                      , Graphics.Vulkan.Core10
                      , Graphics.Vulkan.Core11
                      , Graphics.Vulkan.Extensions
+
+  if flag(safe-foreign-calls)
+    cpp-options: -DSAFE_FOREIGN_CALLS
 
   if flag(android)
     cpp-options: -DVK_USE_PLATFORM_ANDROID_KHR
