diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h
--- a/include/vulkan/vulkan_core.h
+++ b/include/vulkan/vulkan_core.h
@@ -43,7 +43,7 @@
 #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
 #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
 // Version of this file
-#define VK_HEADER_VERSION 74
+#define VK_HEADER_VERSION 77
 
 
 #define VK_NULL_HANDLE 0
@@ -350,6 +350,11 @@
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
     VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
+    VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
+    VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
+    VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
+    VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
+    VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
     VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
     VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
@@ -2715,7 +2720,17 @@
     uint32_t    firstInstance;
 } VkDrawIndirectCommand;
 
+typedef struct VkBaseOutStructure {
+    VkStructureType               sType;
+    struct VkBaseOutStructure*    pNext;
+} VkBaseOutStructure;
 
+typedef struct VkBaseInStructure {
+    VkStructureType                    sType;
+    const struct VkBaseInStructure*    pNext;
+} VkBaseInStructure;
+
+
 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
 typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
@@ -5572,6 +5587,70 @@
 
 
 
+#define VK_KHR_get_display_properties2 1
+#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
+#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
+
+typedef struct VkDisplayProperties2KHR {
+    VkStructureType           sType;
+    void*                     pNext;
+    VkDisplayPropertiesKHR    displayProperties;
+} VkDisplayProperties2KHR;
+
+typedef struct VkDisplayPlaneProperties2KHR {
+    VkStructureType                sType;
+    void*                          pNext;
+    VkDisplayPlanePropertiesKHR    displayPlaneProperties;
+} VkDisplayPlaneProperties2KHR;
+
+typedef struct VkDisplayModeProperties2KHR {
+    VkStructureType               sType;
+    void*                         pNext;
+    VkDisplayModePropertiesKHR    displayModeProperties;
+} VkDisplayModeProperties2KHR;
+
+typedef struct VkDisplayPlaneInfo2KHR {
+    VkStructureType     sType;
+    const void*         pNext;
+    VkDisplayModeKHR    mode;
+    uint32_t            planeIndex;
+} VkDisplayPlaneInfo2KHR;
+
+typedef struct VkDisplayPlaneCapabilities2KHR {
+    VkStructureType                  sType;
+    void*                            pNext;
+    VkDisplayPlaneCapabilitiesKHR    capabilities;
+} VkDisplayPlaneCapabilities2KHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pPropertyCount,
+    VkDisplayProperties2KHR*                    pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pPropertyCount,
+    VkDisplayPlaneProperties2KHR*               pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkDisplayKHR                                display,
+    uint32_t*                                   pPropertyCount,
+    VkDisplayModeProperties2KHR*                pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo,
+    VkDisplayPlaneCapabilities2KHR*             pCapabilities);
+#endif
+
 #define VK_KHR_dedicated_allocation 1
 #define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
 #define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
@@ -5725,6 +5804,33 @@
     VkDevice                                    device,
     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
     VkDescriptorSetLayoutSupport*               pSupport);
+#endif
+
+#define VK_KHR_draw_indirect_count 1
+#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
+#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count"
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    uint32_t                                    maxDrawCount,
+    uint32_t                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    uint32_t                                    maxDrawCount,
+    uint32_t                                    stride);
 #endif
 
 #define VK_EXT_debug_report 1
diff --git a/src-gen/Graphics/Vulkan/Core_1_0.hsc b/src-gen/Graphics/Vulkan/Core_1_0.hsc
--- a/src-gen/Graphics/Vulkan/Core_1_0.hsc
+++ b/src-gen/Graphics/Vulkan/Core_1_0.hsc
@@ -41,22723 +41,29930 @@
         pattern VK_QUEUE_FAMILY_IGNORED, pattern VK_SUBPASS_EXTERNAL,
         -- ** Device initialization
         VkCreateInstance, pattern VkCreateInstance, HS_vkCreateInstance,
-        PFN_vkCreateInstance, vkCreateInstance, vkCreateInstanceSafe,
-        VkDestroyInstance, pattern VkDestroyInstance, HS_vkDestroyInstance,
-        PFN_vkDestroyInstance, vkDestroyInstance, vkDestroyInstanceSafe,
-        VkEnumeratePhysicalDevices, pattern VkEnumeratePhysicalDevices,
-        HS_vkEnumeratePhysicalDevices, PFN_vkEnumeratePhysicalDevices,
-        vkEnumeratePhysicalDevices, vkEnumeratePhysicalDevicesSafe,
-        VkGetPhysicalDeviceFeatures, pattern VkGetPhysicalDeviceFeatures,
-        HS_vkGetPhysicalDeviceFeatures, PFN_vkGetPhysicalDeviceFeatures,
-        vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceFeaturesSafe,
-        VkGetPhysicalDeviceFormatProperties,
-        pattern VkGetPhysicalDeviceFormatProperties,
-        HS_vkGetPhysicalDeviceFormatProperties,
-        PFN_vkGetPhysicalDeviceFormatProperties,
-        vkGetPhysicalDeviceFormatProperties,
-        vkGetPhysicalDeviceFormatPropertiesSafe,
-        VkGetPhysicalDeviceImageFormatProperties,
-        pattern VkGetPhysicalDeviceImageFormatProperties,
-        HS_vkGetPhysicalDeviceImageFormatProperties,
-        PFN_vkGetPhysicalDeviceImageFormatProperties,
-        vkGetPhysicalDeviceImageFormatProperties,
-        vkGetPhysicalDeviceImageFormatPropertiesSafe,
-        VkGetPhysicalDeviceProperties,
-        pattern VkGetPhysicalDeviceProperties,
-        HS_vkGetPhysicalDeviceProperties,
-        PFN_vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceProperties,
-        vkGetPhysicalDevicePropertiesSafe,
-        VkGetPhysicalDeviceQueueFamilyProperties,
-        pattern VkGetPhysicalDeviceQueueFamilyProperties,
-        HS_vkGetPhysicalDeviceQueueFamilyProperties,
-        PFN_vkGetPhysicalDeviceQueueFamilyProperties,
-        vkGetPhysicalDeviceQueueFamilyProperties,
-        vkGetPhysicalDeviceQueueFamilyPropertiesSafe,
-        VkGetPhysicalDeviceMemoryProperties,
-        pattern VkGetPhysicalDeviceMemoryProperties,
-        HS_vkGetPhysicalDeviceMemoryProperties,
-        PFN_vkGetPhysicalDeviceMemoryProperties,
-        vkGetPhysicalDeviceMemoryProperties,
-        vkGetPhysicalDeviceMemoryPropertiesSafe, VkGetInstanceProcAddr,
-        pattern VkGetInstanceProcAddr, HS_vkGetInstanceProcAddr,
-        PFN_vkGetInstanceProcAddr, vkGetInstanceProcAddr,
-        vkGetInstanceProcAddrSafe, VkGetDeviceProcAddr,
-        pattern VkGetDeviceProcAddr, HS_vkGetDeviceProcAddr,
-        PFN_vkGetDeviceProcAddr, vkGetDeviceProcAddr,
-        vkGetDeviceProcAddrSafe, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Memory,
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.Queue,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.ApplicationInfo,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.FormatProperties,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.InstanceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.Memory,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
-        -- ** Device commands
-        VkCreateDevice, pattern VkCreateDevice, HS_vkCreateDevice,
-        PFN_vkCreateDevice, vkCreateDevice, vkCreateDeviceSafe,
-        VkDestroyDevice, pattern VkDestroyDevice, HS_vkDestroyDevice,
-        PFN_vkDestroyDevice, vkDestroyDevice, vkDestroyDeviceSafe,
-        module Graphics.Vulkan.Types.Enum.Device,
-        module Graphics.Vulkan.Types.Struct.Device,
-        -- ** Extension discovery commands
-        VkEnumerateInstanceExtensionProperties,
-        pattern VkEnumerateInstanceExtensionProperties,
-        HS_vkEnumerateInstanceExtensionProperties,
-        PFN_vkEnumerateInstanceExtensionProperties,
-        vkEnumerateInstanceExtensionProperties,
-        vkEnumerateInstanceExtensionPropertiesSafe,
-        VkEnumerateDeviceExtensionProperties,
-        pattern VkEnumerateDeviceExtensionProperties,
-        HS_vkEnumerateDeviceExtensionProperties,
-        PFN_vkEnumerateDeviceExtensionProperties,
-        vkEnumerateDeviceExtensionProperties,
-        vkEnumerateDeviceExtensionPropertiesSafe,
-        module Graphics.Vulkan.Types.Struct.ExtensionProperties,
-        -- ** Layer discovery commands
-        VkEnumerateInstanceLayerProperties,
-        pattern VkEnumerateInstanceLayerProperties,
-        HS_vkEnumerateInstanceLayerProperties,
-        PFN_vkEnumerateInstanceLayerProperties,
-        vkEnumerateInstanceLayerProperties,
-        vkEnumerateInstanceLayerPropertiesSafe,
-        VkEnumerateDeviceLayerProperties,
-        pattern VkEnumerateDeviceLayerProperties,
-        HS_vkEnumerateDeviceLayerProperties,
-        PFN_vkEnumerateDeviceLayerProperties,
-        vkEnumerateDeviceLayerProperties,
-        vkEnumerateDeviceLayerPropertiesSafe,
-        module Graphics.Vulkan.Types.Struct.LayerProperties,
-        -- ** queue commands
-        VkGetDeviceQueue, pattern VkGetDeviceQueue, HS_vkGetDeviceQueue,
-        PFN_vkGetDeviceQueue, vkGetDeviceQueue, vkGetDeviceQueueSafe,
-        VkQueueSubmit, pattern VkQueueSubmit, HS_vkQueueSubmit,
-        PFN_vkQueueSubmit, vkQueueSubmit, vkQueueSubmitSafe,
-        VkQueueWaitIdle, pattern VkQueueWaitIdle, HS_vkQueueWaitIdle,
-        PFN_vkQueueWaitIdle, vkQueueWaitIdle, vkQueueWaitIdleSafe,
-        VkDeviceWaitIdle, pattern VkDeviceWaitIdle, HS_vkDeviceWaitIdle,
-        PFN_vkDeviceWaitIdle, vkDeviceWaitIdle, vkDeviceWaitIdleSafe,
-        module Graphics.Vulkan.Types.Struct.SubmitInfo, -- ** Memory commands
-                                                        VkAllocateMemory,
-        pattern VkAllocateMemory, HS_vkAllocateMemory,
-        PFN_vkAllocateMemory, vkAllocateMemory, vkAllocateMemorySafe,
-        VkFreeMemory, pattern VkFreeMemory, HS_vkFreeMemory,
-        PFN_vkFreeMemory, vkFreeMemory, vkFreeMemorySafe, VkMapMemory,
-        pattern VkMapMemory, HS_vkMapMemory, PFN_vkMapMemory, vkMapMemory,
-        vkMapMemorySafe, VkUnmapMemory, pattern VkUnmapMemory,
-        HS_vkUnmapMemory, PFN_vkUnmapMemory, vkUnmapMemory,
-        vkUnmapMemorySafe, VkFlushMappedMemoryRanges,
-        pattern VkFlushMappedMemoryRanges, HS_vkFlushMappedMemoryRanges,
-        PFN_vkFlushMappedMemoryRanges, vkFlushMappedMemoryRanges,
-        vkFlushMappedMemoryRangesSafe, VkInvalidateMappedMemoryRanges,
-        pattern VkInvalidateMappedMemoryRanges,
-        HS_vkInvalidateMappedMemoryRanges,
-        PFN_vkInvalidateMappedMemoryRanges, vkInvalidateMappedMemoryRanges,
-        vkInvalidateMappedMemoryRangesSafe, VkGetDeviceMemoryCommitment,
-        pattern VkGetDeviceMemoryCommitment,
-        HS_vkGetDeviceMemoryCommitment, PFN_vkGetDeviceMemoryCommitment,
-        vkGetDeviceMemoryCommitment, vkGetDeviceMemoryCommitmentSafe,
-        module Graphics.Vulkan.Types.Struct.MappedMemoryRange,
-        -- ** Memory management API commands
-        VkBindBufferMemory, pattern VkBindBufferMemory,
-        HS_vkBindBufferMemory, PFN_vkBindBufferMemory, vkBindBufferMemory,
-        vkBindBufferMemorySafe, VkBindImageMemory,
-        pattern VkBindImageMemory, HS_vkBindImageMemory,
-        PFN_vkBindImageMemory, vkBindImageMemory, vkBindImageMemorySafe,
-        VkGetBufferMemoryRequirements,
-        pattern VkGetBufferMemoryRequirements,
-        HS_vkGetBufferMemoryRequirements,
-        PFN_vkGetBufferMemoryRequirements, vkGetBufferMemoryRequirements,
-        vkGetBufferMemoryRequirementsSafe, VkGetImageMemoryRequirements,
-        pattern VkGetImageMemoryRequirements,
-        HS_vkGetImageMemoryRequirements, PFN_vkGetImageMemoryRequirements,
-        vkGetImageMemoryRequirements, vkGetImageMemoryRequirementsSafe,
-        -- ** Sparse resource memory management API commands
-        VkGetImageSparseMemoryRequirements,
-        pattern VkGetImageSparseMemoryRequirements,
-        HS_vkGetImageSparseMemoryRequirements,
-        PFN_vkGetImageSparseMemoryRequirements,
-        vkGetImageSparseMemoryRequirements,
-        vkGetImageSparseMemoryRequirementsSafe,
-        VkGetPhysicalDeviceSparseImageFormatProperties,
-        pattern VkGetPhysicalDeviceSparseImageFormatProperties,
-        HS_vkGetPhysicalDeviceSparseImageFormatProperties,
-        PFN_vkGetPhysicalDeviceSparseImageFormatProperties,
-        vkGetPhysicalDeviceSparseImageFormatProperties,
-        vkGetPhysicalDeviceSparseImageFormatPropertiesSafe,
-        VkQueueBindSparse, pattern VkQueueBindSparse, HS_vkQueueBindSparse,
-        PFN_vkQueueBindSparse, vkQueueBindSparse, vkQueueBindSparseSafe,
-        module Graphics.Vulkan.Types.Enum.Sparse,
-        module Graphics.Vulkan.Types.Struct.Bind,
-        module Graphics.Vulkan.Types.Struct.Offset,
-        module Graphics.Vulkan.Types.Struct.Sparse, -- ** Fence commands
-                                                    VkCreateFence,
-        pattern VkCreateFence, HS_vkCreateFence, PFN_vkCreateFence,
-        vkCreateFence, vkCreateFenceSafe, VkDestroyFence,
-        pattern VkDestroyFence, HS_vkDestroyFence, PFN_vkDestroyFence,
-        vkDestroyFence, vkDestroyFenceSafe, VkResetFences,
-        pattern VkResetFences, HS_vkResetFences, PFN_vkResetFences,
-        vkResetFences, vkResetFencesSafe, VkGetFenceStatus,
-        pattern VkGetFenceStatus, HS_vkGetFenceStatus,
-        PFN_vkGetFenceStatus, vkGetFenceStatus, vkGetFenceStatusSafe,
-        VkWaitForFences, pattern VkWaitForFences, HS_vkWaitForFences,
-        PFN_vkWaitForFences, vkWaitForFences, vkWaitForFencesSafe,
-        module Graphics.Vulkan.Types.Enum.Fence,
-        module Graphics.Vulkan.Types.Struct.Fence, -- ** Queue semaphore commands
-                                                   VkCreateSemaphore,
-        pattern VkCreateSemaphore, HS_vkCreateSemaphore,
-        PFN_vkCreateSemaphore, vkCreateSemaphore, vkCreateSemaphoreSafe,
-        VkDestroySemaphore, pattern VkDestroySemaphore,
-        HS_vkDestroySemaphore, PFN_vkDestroySemaphore, vkDestroySemaphore,
-        vkDestroySemaphoreSafe,
-        module Graphics.Vulkan.Types.Struct.Semaphore, -- ** Event commands
-                                                       VkCreateEvent,
-        pattern VkCreateEvent, HS_vkCreateEvent, PFN_vkCreateEvent,
-        vkCreateEvent, vkCreateEventSafe, VkDestroyEvent,
-        pattern VkDestroyEvent, HS_vkDestroyEvent, PFN_vkDestroyEvent,
-        vkDestroyEvent, vkDestroyEventSafe, VkGetEventStatus,
-        pattern VkGetEventStatus, HS_vkGetEventStatus,
-        PFN_vkGetEventStatus, vkGetEventStatus, vkGetEventStatusSafe,
-        VkSetEvent, pattern VkSetEvent, HS_vkSetEvent, PFN_vkSetEvent,
-        vkSetEvent, vkSetEventSafe, VkResetEvent, pattern VkResetEvent,
-        HS_vkResetEvent, PFN_vkResetEvent, vkResetEvent, vkResetEventSafe,
-        module Graphics.Vulkan.Types.Struct.EventCreateInfo,
-        -- ** Query commands
-        VkCreateQueryPool, pattern VkCreateQueryPool, HS_vkCreateQueryPool,
-        PFN_vkCreateQueryPool, vkCreateQueryPool, vkCreateQueryPoolSafe,
-        VkDestroyQueryPool, pattern VkDestroyQueryPool,
-        HS_vkDestroyQueryPool, PFN_vkDestroyQueryPool, vkDestroyQueryPool,
-        vkDestroyQueryPoolSafe, VkGetQueryPoolResults,
-        pattern VkGetQueryPoolResults, HS_vkGetQueryPoolResults,
-        PFN_vkGetQueryPoolResults, vkGetQueryPoolResults,
-        vkGetQueryPoolResultsSafe, module Graphics.Vulkan.Types.Enum.Query,
-        module Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo,
-        -- ** Buffer commands
-        VkCreateBuffer, pattern VkCreateBuffer, HS_vkCreateBuffer,
-        PFN_vkCreateBuffer, vkCreateBuffer, vkCreateBufferSafe,
-        VkDestroyBuffer, pattern VkDestroyBuffer, HS_vkDestroyBuffer,
-        PFN_vkDestroyBuffer, vkDestroyBuffer, vkDestroyBufferSafe,
-        module Graphics.Vulkan.Types.Enum.Buffer,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Struct.Buffer, -- ** Buffer view commands
-                                                    VkCreateBufferView,
-        pattern VkCreateBufferView, HS_vkCreateBufferView,
-        PFN_vkCreateBufferView, vkCreateBufferView, vkCreateBufferViewSafe,
-        VkDestroyBufferView, pattern VkDestroyBufferView,
-        HS_vkDestroyBufferView, PFN_vkDestroyBufferView,
-        vkDestroyBufferView, vkDestroyBufferViewSafe, -- ** Image commands
-                                                      VkCreateImage,
-        pattern VkCreateImage, HS_vkCreateImage, PFN_vkCreateImage,
-        vkCreateImage, vkCreateImageSafe, VkDestroyImage,
-        pattern VkDestroyImage, HS_vkDestroyImage, PFN_vkDestroyImage,
-        vkDestroyImage, vkDestroyImageSafe, VkGetImageSubresourceLayout,
-        pattern VkGetImageSubresourceLayout,
-        HS_vkGetImageSubresourceLayout, PFN_vkGetImageSubresourceLayout,
-        vkGetImageSubresourceLayout, vkGetImageSubresourceLayoutSafe,
-        module Graphics.Vulkan.Types.Struct.SubresourceLayout,
-        -- ** Image view commands
-        VkCreateImageView, pattern VkCreateImageView, HS_vkCreateImageView,
-        PFN_vkCreateImageView, vkCreateImageView, vkCreateImageViewSafe,
-        VkDestroyImageView, pattern VkDestroyImageView,
-        HS_vkDestroyImageView, PFN_vkDestroyImageView, vkDestroyImageView,
-        vkDestroyImageViewSafe,
-        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
-        module Graphics.Vulkan.Types.Struct.ComponentMapping,
-        -- ** Shader commands
-        VkCreateShaderModule, pattern VkCreateShaderModule,
-        HS_vkCreateShaderModule, PFN_vkCreateShaderModule,
-        vkCreateShaderModule, vkCreateShaderModuleSafe,
-        VkDestroyShaderModule, pattern VkDestroyShaderModule,
-        HS_vkDestroyShaderModule, PFN_vkDestroyShaderModule,
-        vkDestroyShaderModule, vkDestroyShaderModuleSafe,
-        module Graphics.Vulkan.Types.Struct.Shader, -- ** Pipeline Cache commands
-                                                    VkCreatePipelineCache,
-        pattern VkCreatePipelineCache, HS_vkCreatePipelineCache,
-        PFN_vkCreatePipelineCache, vkCreatePipelineCache,
-        vkCreatePipelineCacheSafe, VkDestroyPipelineCache,
-        pattern VkDestroyPipelineCache, HS_vkDestroyPipelineCache,
-        PFN_vkDestroyPipelineCache, vkDestroyPipelineCache,
-        vkDestroyPipelineCacheSafe, VkGetPipelineCacheData,
-        pattern VkGetPipelineCacheData, HS_vkGetPipelineCacheData,
-        PFN_vkGetPipelineCacheData, vkGetPipelineCacheData,
-        vkGetPipelineCacheDataSafe, VkMergePipelineCaches,
-        pattern VkMergePipelineCaches, HS_vkMergePipelineCaches,
-        PFN_vkMergePipelineCaches, vkMergePipelineCaches,
-        vkMergePipelineCachesSafe,
-        module Graphics.Vulkan.Types.Struct.Pipeline,
-        -- ** Pipeline commands
-        VkCreateGraphicsPipelines, pattern VkCreateGraphicsPipelines,
-        HS_vkCreateGraphicsPipelines, PFN_vkCreateGraphicsPipelines,
-        vkCreateGraphicsPipelines, vkCreateGraphicsPipelinesSafe,
-        VkCreateComputePipelines, pattern VkCreateComputePipelines,
-        HS_vkCreateComputePipelines, PFN_vkCreateComputePipelines,
-        vkCreateComputePipelines, vkCreateComputePipelinesSafe,
-        VkDestroyPipeline, pattern VkDestroyPipeline, HS_vkDestroyPipeline,
-        PFN_vkDestroyPipeline, vkDestroyPipeline, vkDestroyPipelineSafe,
-        module Graphics.Vulkan.Types.Enum.Blend,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompareOp,
-        module Graphics.Vulkan.Types.Enum.CullModeFlags,
-        module Graphics.Vulkan.Types.Enum.DynamicState,
-        module Graphics.Vulkan.Types.Enum.FrontFace,
-        module Graphics.Vulkan.Types.Enum.LogicOp,
-        module Graphics.Vulkan.Types.Enum.PolygonMode,
-        module Graphics.Vulkan.Types.Enum.PrimitiveTopology,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.Stencil,
-        module Graphics.Vulkan.Types.Enum.VertexInputRate,
-        module Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo,
-        module Graphics.Vulkan.Types.Struct.Rect,
-        module Graphics.Vulkan.Types.Struct.Specialization,
-        module Graphics.Vulkan.Types.Struct.StencilOpState,
-        module Graphics.Vulkan.Types.Struct.VertexInput,
-        module Graphics.Vulkan.Types.Struct.Viewport,
-        -- ** Pipeline layout commands
-        VkCreatePipelineLayout, pattern VkCreatePipelineLayout,
-        HS_vkCreatePipelineLayout, PFN_vkCreatePipelineLayout,
-        vkCreatePipelineLayout, vkCreatePipelineLayoutSafe,
-        VkDestroyPipelineLayout, pattern VkDestroyPipelineLayout,
-        HS_vkDestroyPipelineLayout, PFN_vkDestroyPipelineLayout,
-        vkDestroyPipelineLayout, vkDestroyPipelineLayoutSafe,
-        module Graphics.Vulkan.Types.Struct.PushConstantRange,
-        -- ** Sampler commands
-        VkCreateSampler, pattern VkCreateSampler, HS_vkCreateSampler,
-        PFN_vkCreateSampler, vkCreateSampler, vkCreateSamplerSafe,
-        VkDestroySampler, pattern VkDestroySampler, HS_vkDestroySampler,
-        PFN_vkDestroySampler, vkDestroySampler, vkDestroySamplerSafe,
-        module Graphics.Vulkan.Types.Enum.BorderColor,
-        module Graphics.Vulkan.Types.Enum.Filter,
-        module Graphics.Vulkan.Types.Enum.Sampler,
-        module Graphics.Vulkan.Types.Struct.Sampler,
-        -- ** Descriptor set commands
-        VkCreateDescriptorSetLayout, pattern VkCreateDescriptorSetLayout,
-        HS_vkCreateDescriptorSetLayout, PFN_vkCreateDescriptorSetLayout,
-        vkCreateDescriptorSetLayout, vkCreateDescriptorSetLayoutSafe,
-        VkDestroyDescriptorSetLayout, pattern VkDestroyDescriptorSetLayout,
-        HS_vkDestroyDescriptorSetLayout, PFN_vkDestroyDescriptorSetLayout,
-        vkDestroyDescriptorSetLayout, vkDestroyDescriptorSetLayoutSafe,
-        VkCreateDescriptorPool, pattern VkCreateDescriptorPool,
-        HS_vkCreateDescriptorPool, PFN_vkCreateDescriptorPool,
-        vkCreateDescriptorPool, vkCreateDescriptorPoolSafe,
-        VkDestroyDescriptorPool, pattern VkDestroyDescriptorPool,
-        HS_vkDestroyDescriptorPool, PFN_vkDestroyDescriptorPool,
-        vkDestroyDescriptorPool, vkDestroyDescriptorPoolSafe,
-        VkResetDescriptorPool, pattern VkResetDescriptorPool,
-        HS_vkResetDescriptorPool, PFN_vkResetDescriptorPool,
-        vkResetDescriptorPool, vkResetDescriptorPoolSafe,
-        VkAllocateDescriptorSets, pattern VkAllocateDescriptorSets,
-        HS_vkAllocateDescriptorSets, PFN_vkAllocateDescriptorSets,
-        vkAllocateDescriptorSets, vkAllocateDescriptorSetsSafe,
-        VkFreeDescriptorSets, pattern VkFreeDescriptorSets,
-        HS_vkFreeDescriptorSets, PFN_vkFreeDescriptorSets,
-        vkFreeDescriptorSets, vkFreeDescriptorSetsSafe,
-        VkUpdateDescriptorSets, pattern VkUpdateDescriptorSets,
-        HS_vkUpdateDescriptorSets, PFN_vkUpdateDescriptorSets,
-        vkUpdateDescriptorSets, vkUpdateDescriptorSetsSafe,
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        module Graphics.Vulkan.Types.Struct.CopyDescriptorSet,
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        module Graphics.Vulkan.Types.Struct.WriteDescriptorSet,
-        -- ** Pass commands
-        VkCreateFramebuffer, pattern VkCreateFramebuffer,
-        HS_vkCreateFramebuffer, PFN_vkCreateFramebuffer,
-        vkCreateFramebuffer, vkCreateFramebufferSafe, VkDestroyFramebuffer,
-        pattern VkDestroyFramebuffer, HS_vkDestroyFramebuffer,
-        PFN_vkDestroyFramebuffer, vkDestroyFramebuffer,
-        vkDestroyFramebufferSafe, VkCreateRenderPass,
-        pattern VkCreateRenderPass, HS_vkCreateRenderPass,
-        PFN_vkCreateRenderPass, vkCreateRenderPass, vkCreateRenderPassSafe,
-        VkDestroyRenderPass, pattern VkDestroyRenderPass,
-        HS_vkDestroyRenderPass, PFN_vkDestroyRenderPass,
-        vkDestroyRenderPass, vkDestroyRenderPassSafe,
-        VkGetRenderAreaGranularity, pattern VkGetRenderAreaGranularity,
-        HS_vkGetRenderAreaGranularity, PFN_vkGetRenderAreaGranularity,
-        vkGetRenderAreaGranularity, vkGetRenderAreaGranularitySafe,
-        module Graphics.Vulkan.Types.Enum.AccessFlags,
-        module Graphics.Vulkan.Types.Enum.Attachment,
-        module Graphics.Vulkan.Types.Enum.DependencyFlags,
-        module Graphics.Vulkan.Types.Enum.Subpass,
-        module Graphics.Vulkan.Types.Struct.Attachment,
-        module Graphics.Vulkan.Types.Struct.FramebufferCreateInfo,
-        module Graphics.Vulkan.Types.Struct.RenderPass,
-        module Graphics.Vulkan.Types.Struct.Subpass, -- ** Command pool commands
-                                                     VkCreateCommandPool,
-        pattern VkCreateCommandPool, HS_vkCreateCommandPool,
-        PFN_vkCreateCommandPool, vkCreateCommandPool,
-        vkCreateCommandPoolSafe, VkDestroyCommandPool,
-        pattern VkDestroyCommandPool, HS_vkDestroyCommandPool,
-        PFN_vkDestroyCommandPool, vkDestroyCommandPool,
-        vkDestroyCommandPoolSafe, VkResetCommandPool,
-        pattern VkResetCommandPool, HS_vkResetCommandPool,
-        PFN_vkResetCommandPool, vkResetCommandPool, vkResetCommandPoolSafe,
-        module Graphics.Vulkan.Types.Enum.Command,
-        module Graphics.Vulkan.Types.Struct.Command,
-        -- ** Command buffer commands
-        VkAllocateCommandBuffers, pattern VkAllocateCommandBuffers,
-        HS_vkAllocateCommandBuffers, PFN_vkAllocateCommandBuffers,
-        vkAllocateCommandBuffers, vkAllocateCommandBuffersSafe,
-        VkFreeCommandBuffers, pattern VkFreeCommandBuffers,
-        HS_vkFreeCommandBuffers, PFN_vkFreeCommandBuffers,
-        vkFreeCommandBuffers, vkFreeCommandBuffersSafe,
-        VkBeginCommandBuffer, pattern VkBeginCommandBuffer,
-        HS_vkBeginCommandBuffer, PFN_vkBeginCommandBuffer,
-        vkBeginCommandBuffer, vkBeginCommandBufferSafe, VkEndCommandBuffer,
-        pattern VkEndCommandBuffer, HS_vkEndCommandBuffer,
-        PFN_vkEndCommandBuffer, vkEndCommandBuffer, vkEndCommandBufferSafe,
-        VkResetCommandBuffer, pattern VkResetCommandBuffer,
-        HS_vkResetCommandBuffer, PFN_vkResetCommandBuffer,
-        vkResetCommandBuffer, vkResetCommandBufferSafe, -- ** Command buffer building commands
-                                                        VkCmdBindPipeline,
-        pattern VkCmdBindPipeline, HS_vkCmdBindPipeline,
-        PFN_vkCmdBindPipeline, vkCmdBindPipeline, vkCmdBindPipelineSafe,
-        VkCmdSetViewport, pattern VkCmdSetViewport, HS_vkCmdSetViewport,
-        PFN_vkCmdSetViewport, vkCmdSetViewport, vkCmdSetViewportSafe,
-        VkCmdSetScissor, pattern VkCmdSetScissor, HS_vkCmdSetScissor,
-        PFN_vkCmdSetScissor, vkCmdSetScissor, vkCmdSetScissorSafe,
-        VkCmdSetLineWidth, pattern VkCmdSetLineWidth, HS_vkCmdSetLineWidth,
-        PFN_vkCmdSetLineWidth, vkCmdSetLineWidth, vkCmdSetLineWidthSafe,
-        VkCmdSetDepthBias, pattern VkCmdSetDepthBias, HS_vkCmdSetDepthBias,
-        PFN_vkCmdSetDepthBias, vkCmdSetDepthBias, vkCmdSetDepthBiasSafe,
-        VkCmdSetBlendConstants, pattern VkCmdSetBlendConstants,
-        HS_vkCmdSetBlendConstants, PFN_vkCmdSetBlendConstants,
-        vkCmdSetBlendConstants, vkCmdSetBlendConstantsSafe,
-        VkCmdSetDepthBounds, pattern VkCmdSetDepthBounds,
-        HS_vkCmdSetDepthBounds, PFN_vkCmdSetDepthBounds,
-        vkCmdSetDepthBounds, vkCmdSetDepthBoundsSafe,
-        VkCmdSetStencilCompareMask, pattern VkCmdSetStencilCompareMask,
-        HS_vkCmdSetStencilCompareMask, PFN_vkCmdSetStencilCompareMask,
-        vkCmdSetStencilCompareMask, vkCmdSetStencilCompareMaskSafe,
-        VkCmdSetStencilWriteMask, pattern VkCmdSetStencilWriteMask,
-        HS_vkCmdSetStencilWriteMask, PFN_vkCmdSetStencilWriteMask,
-        vkCmdSetStencilWriteMask, vkCmdSetStencilWriteMaskSafe,
-        VkCmdSetStencilReference, pattern VkCmdSetStencilReference,
-        HS_vkCmdSetStencilReference, PFN_vkCmdSetStencilReference,
-        vkCmdSetStencilReference, vkCmdSetStencilReferenceSafe,
-        VkCmdBindDescriptorSets, pattern VkCmdBindDescriptorSets,
-        HS_vkCmdBindDescriptorSets, PFN_vkCmdBindDescriptorSets,
-        vkCmdBindDescriptorSets, vkCmdBindDescriptorSetsSafe,
-        VkCmdBindIndexBuffer, pattern VkCmdBindIndexBuffer,
-        HS_vkCmdBindIndexBuffer, PFN_vkCmdBindIndexBuffer,
-        vkCmdBindIndexBuffer, vkCmdBindIndexBufferSafe,
-        VkCmdBindVertexBuffers, pattern VkCmdBindVertexBuffers,
-        HS_vkCmdBindVertexBuffers, PFN_vkCmdBindVertexBuffers,
-        vkCmdBindVertexBuffers, vkCmdBindVertexBuffersSafe, VkCmdDraw,
-        pattern VkCmdDraw, HS_vkCmdDraw, PFN_vkCmdDraw, vkCmdDraw,
-        vkCmdDrawSafe, VkCmdDrawIndexed, pattern VkCmdDrawIndexed,
-        HS_vkCmdDrawIndexed, PFN_vkCmdDrawIndexed, vkCmdDrawIndexed,
-        vkCmdDrawIndexedSafe, VkCmdDrawIndirect, pattern VkCmdDrawIndirect,
-        HS_vkCmdDrawIndirect, PFN_vkCmdDrawIndirect, vkCmdDrawIndirect,
-        vkCmdDrawIndirectSafe, VkCmdDrawIndexedIndirect,
-        pattern VkCmdDrawIndexedIndirect, HS_vkCmdDrawIndexedIndirect,
-        PFN_vkCmdDrawIndexedIndirect, vkCmdDrawIndexedIndirect,
-        vkCmdDrawIndexedIndirectSafe, VkCmdDispatch, pattern VkCmdDispatch,
-        HS_vkCmdDispatch, PFN_vkCmdDispatch, vkCmdDispatch,
-        vkCmdDispatchSafe, VkCmdDispatchIndirect,
-        pattern VkCmdDispatchIndirect, HS_vkCmdDispatchIndirect,
-        PFN_vkCmdDispatchIndirect, vkCmdDispatchIndirect,
-        vkCmdDispatchIndirectSafe, VkCmdCopyBuffer,
-        pattern VkCmdCopyBuffer, HS_vkCmdCopyBuffer, PFN_vkCmdCopyBuffer,
-        vkCmdCopyBuffer, vkCmdCopyBufferSafe, VkCmdCopyImage,
-        pattern VkCmdCopyImage, HS_vkCmdCopyImage, PFN_vkCmdCopyImage,
-        vkCmdCopyImage, vkCmdCopyImageSafe, VkCmdBlitImage,
-        pattern VkCmdBlitImage, HS_vkCmdBlitImage, PFN_vkCmdBlitImage,
-        vkCmdBlitImage, vkCmdBlitImageSafe, VkCmdCopyBufferToImage,
-        pattern VkCmdCopyBufferToImage, HS_vkCmdCopyBufferToImage,
-        PFN_vkCmdCopyBufferToImage, vkCmdCopyBufferToImage,
-        vkCmdCopyBufferToImageSafe, VkCmdCopyImageToBuffer,
-        pattern VkCmdCopyImageToBuffer, HS_vkCmdCopyImageToBuffer,
-        PFN_vkCmdCopyImageToBuffer, vkCmdCopyImageToBuffer,
-        vkCmdCopyImageToBufferSafe, VkCmdUpdateBuffer,
-        pattern VkCmdUpdateBuffer, HS_vkCmdUpdateBuffer,
-        PFN_vkCmdUpdateBuffer, vkCmdUpdateBuffer, vkCmdUpdateBufferSafe,
-        VkCmdFillBuffer, pattern VkCmdFillBuffer, HS_vkCmdFillBuffer,
-        PFN_vkCmdFillBuffer, vkCmdFillBuffer, vkCmdFillBufferSafe,
-        VkCmdClearColorImage, pattern VkCmdClearColorImage,
-        HS_vkCmdClearColorImage, PFN_vkCmdClearColorImage,
-        vkCmdClearColorImage, vkCmdClearColorImageSafe,
-        VkCmdClearDepthStencilImage, pattern VkCmdClearDepthStencilImage,
-        HS_vkCmdClearDepthStencilImage, PFN_vkCmdClearDepthStencilImage,
-        vkCmdClearDepthStencilImage, vkCmdClearDepthStencilImageSafe,
-        VkCmdClearAttachments, pattern VkCmdClearAttachments,
-        HS_vkCmdClearAttachments, PFN_vkCmdClearAttachments,
-        vkCmdClearAttachments, vkCmdClearAttachmentsSafe,
-        VkCmdResolveImage, pattern VkCmdResolveImage, HS_vkCmdResolveImage,
-        PFN_vkCmdResolveImage, vkCmdResolveImage, vkCmdResolveImageSafe,
-        VkCmdSetEvent, pattern VkCmdSetEvent, HS_vkCmdSetEvent,
-        PFN_vkCmdSetEvent, vkCmdSetEvent, vkCmdSetEventSafe,
-        VkCmdResetEvent, pattern VkCmdResetEvent, HS_vkCmdResetEvent,
-        PFN_vkCmdResetEvent, vkCmdResetEvent, vkCmdResetEventSafe,
-        VkCmdWaitEvents, pattern VkCmdWaitEvents, HS_vkCmdWaitEvents,
-        PFN_vkCmdWaitEvents, vkCmdWaitEvents, vkCmdWaitEventsSafe,
-        VkCmdPipelineBarrier, pattern VkCmdPipelineBarrier,
-        HS_vkCmdPipelineBarrier, PFN_vkCmdPipelineBarrier,
-        vkCmdPipelineBarrier, vkCmdPipelineBarrierSafe, VkCmdBeginQuery,
-        pattern VkCmdBeginQuery, HS_vkCmdBeginQuery, PFN_vkCmdBeginQuery,
-        vkCmdBeginQuery, vkCmdBeginQuerySafe, VkCmdEndQuery,
-        pattern VkCmdEndQuery, HS_vkCmdEndQuery, PFN_vkCmdEndQuery,
-        vkCmdEndQuery, vkCmdEndQuerySafe, VkCmdResetQueryPool,
-        pattern VkCmdResetQueryPool, HS_vkCmdResetQueryPool,
-        PFN_vkCmdResetQueryPool, vkCmdResetQueryPool,
-        vkCmdResetQueryPoolSafe, VkCmdWriteTimestamp,
-        pattern VkCmdWriteTimestamp, HS_vkCmdWriteTimestamp,
-        PFN_vkCmdWriteTimestamp, vkCmdWriteTimestamp,
-        vkCmdWriteTimestampSafe, VkCmdCopyQueryPoolResults,
-        pattern VkCmdCopyQueryPoolResults, HS_vkCmdCopyQueryPoolResults,
-        PFN_vkCmdCopyQueryPoolResults, vkCmdCopyQueryPoolResults,
-        vkCmdCopyQueryPoolResultsSafe, VkCmdPushConstants,
-        pattern VkCmdPushConstants, HS_vkCmdPushConstants,
-        PFN_vkCmdPushConstants, vkCmdPushConstants, vkCmdPushConstantsSafe,
-        VkCmdBeginRenderPass, pattern VkCmdBeginRenderPass,
-        HS_vkCmdBeginRenderPass, PFN_vkCmdBeginRenderPass,
-        vkCmdBeginRenderPass, vkCmdBeginRenderPassSafe, VkCmdNextSubpass,
-        pattern VkCmdNextSubpass, HS_vkCmdNextSubpass,
-        PFN_vkCmdNextSubpass, vkCmdNextSubpass, vkCmdNextSubpassSafe,
-        VkCmdEndRenderPass, pattern VkCmdEndRenderPass,
-        HS_vkCmdEndRenderPass, PFN_vkCmdEndRenderPass, vkCmdEndRenderPass,
-        vkCmdEndRenderPassSafe, VkCmdExecuteCommands,
-        pattern VkCmdExecuteCommands, HS_vkCmdExecuteCommands,
-        PFN_vkCmdExecuteCommands, vkCmdExecuteCommands,
-        vkCmdExecuteCommandsSafe,
-        module Graphics.Vulkan.Types.Enum.IndexType,
-        module Graphics.Vulkan.Types.Struct.Clear,
-        -- ** Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.
-        module Graphics.Vulkan.Types.Struct.DispatchIndirectCommand,
-        module Graphics.Vulkan.Types.Struct.DrawInd,
-        module Graphics.Vulkan.Types.Enum.Object)
-       where
-import           GHC.Ptr                                                (Ptr (..))
-import           Graphics.Vulkan.Constants                              (pattern VK_ATTACHMENT_UNUSED,
-                                                                         pattern VK_FALSE,
-                                                                         pattern VK_LOD_CLAMP_NONE,
-                                                                         pattern VK_QUEUE_FAMILY_IGNORED,
-                                                                         pattern VK_REMAINING_ARRAY_LAYERS,
-                                                                         pattern VK_REMAINING_MIP_LEVELS,
-                                                                         pattern VK_SUBPASS_EXTERNAL,
-                                                                         pattern VK_TRUE,
-                                                                         pattern VK_WHOLE_SIZE)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Proc
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.AccessFlags
-import           Graphics.Vulkan.Types.Enum.Attachment
-import           Graphics.Vulkan.Types.Enum.Blend
-import           Graphics.Vulkan.Types.Enum.BorderColor
-import           Graphics.Vulkan.Types.Enum.Buffer
-import           Graphics.Vulkan.Types.Enum.Color
-import           Graphics.Vulkan.Types.Enum.Command
-import           Graphics.Vulkan.Types.Enum.CompareOp
-import           Graphics.Vulkan.Types.Enum.ComponentSwizzle
-import           Graphics.Vulkan.Types.Enum.CullModeFlags
-import           Graphics.Vulkan.Types.Enum.DependencyFlags
-import           Graphics.Vulkan.Types.Enum.Descriptor
-import           Graphics.Vulkan.Types.Enum.Device
-import           Graphics.Vulkan.Types.Enum.DynamicState
-import           Graphics.Vulkan.Types.Enum.Fence
-import           Graphics.Vulkan.Types.Enum.Filter
-import           Graphics.Vulkan.Types.Enum.Format
-import           Graphics.Vulkan.Types.Enum.FrontFace
-import           Graphics.Vulkan.Types.Enum.Image
-import           Graphics.Vulkan.Types.Enum.IndexType
-import           Graphics.Vulkan.Types.Enum.InternalAllocationType
-import           Graphics.Vulkan.Types.Enum.LogicOp
-import           Graphics.Vulkan.Types.Enum.Memory
-import           Graphics.Vulkan.Types.Enum.Object
-import           Graphics.Vulkan.Types.Enum.PhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.Pipeline
-import           Graphics.Vulkan.Types.Enum.PolygonMode
-import           Graphics.Vulkan.Types.Enum.PrimitiveTopology
-import           Graphics.Vulkan.Types.Enum.Query
-import           Graphics.Vulkan.Types.Enum.Queue
-import           Graphics.Vulkan.Types.Enum.Result
-import           Graphics.Vulkan.Types.Enum.SampleCountFlags
-import           Graphics.Vulkan.Types.Enum.Sampler
-import           Graphics.Vulkan.Types.Enum.Shader
-import           Graphics.Vulkan.Types.Enum.SharingMode
-import           Graphics.Vulkan.Types.Enum.Sparse
-import           Graphics.Vulkan.Types.Enum.Stencil
-import           Graphics.Vulkan.Types.Enum.StructureType
-import           Graphics.Vulkan.Types.Enum.Subpass
-import           Graphics.Vulkan.Types.Enum.SystemAllocationScope
-import           Graphics.Vulkan.Types.Enum.VertexInputRate
-import           Graphics.Vulkan.Types.Funcpointers
-import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Struct.AllocationCallbacks
-import           Graphics.Vulkan.Types.Struct.ApplicationInfo
-import           Graphics.Vulkan.Types.Struct.Attachment
-import           Graphics.Vulkan.Types.Struct.Bind
-import           Graphics.Vulkan.Types.Struct.Buffer
-import           Graphics.Vulkan.Types.Struct.Clear
-import           Graphics.Vulkan.Types.Struct.Command
-import           Graphics.Vulkan.Types.Struct.ComponentMapping
-import           Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo
-import           Graphics.Vulkan.Types.Struct.CopyDescriptorSet
-import           Graphics.Vulkan.Types.Struct.Descriptor
-import           Graphics.Vulkan.Types.Struct.Device
-import           Graphics.Vulkan.Types.Struct.DispatchIndirectCommand
-import           Graphics.Vulkan.Types.Struct.DrawInd
-import           Graphics.Vulkan.Types.Struct.EventCreateInfo
-import           Graphics.Vulkan.Types.Struct.ExtensionProperties
-import           Graphics.Vulkan.Types.Struct.Extent
-import           Graphics.Vulkan.Types.Struct.Fence
-import           Graphics.Vulkan.Types.Struct.FormatProperties
-import           Graphics.Vulkan.Types.Struct.FramebufferCreateInfo
-import           Graphics.Vulkan.Types.Struct.Image
-import           Graphics.Vulkan.Types.Struct.InstanceCreateInfo
-import           Graphics.Vulkan.Types.Struct.LayerProperties
-import           Graphics.Vulkan.Types.Struct.MappedMemoryRange
-import           Graphics.Vulkan.Types.Struct.Memory
-import           Graphics.Vulkan.Types.Struct.Offset
-import           Graphics.Vulkan.Types.Struct.PhysicalDevice
-import           Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.Pipeline
-import           Graphics.Vulkan.Types.Struct.PushConstantRange
-import           Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo
-import           Graphics.Vulkan.Types.Struct.QueueFamilyProperties
-import           Graphics.Vulkan.Types.Struct.Rect
-import           Graphics.Vulkan.Types.Struct.RenderPass
-import           Graphics.Vulkan.Types.Struct.Sampler
-import           Graphics.Vulkan.Types.Struct.Semaphore
-import           Graphics.Vulkan.Types.Struct.Shader
-import           Graphics.Vulkan.Types.Struct.Sparse
-import           Graphics.Vulkan.Types.Struct.Specialization
-import           Graphics.Vulkan.Types.Struct.StencilOpState
-import           Graphics.Vulkan.Types.Struct.SubmitInfo
-import           Graphics.Vulkan.Types.Struct.Subpass
-import           Graphics.Vulkan.Types.Struct.SubresourceLayout
-import           Graphics.Vulkan.Types.Struct.VertexInput
-import           Graphics.Vulkan.Types.Struct.Viewport
-import           Graphics.Vulkan.Types.Struct.WriteDescriptorSet
-import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
-
-pattern VkCreateInstance :: CString
-
-pattern VkCreateInstance <- (is_VkCreateInstance -> True)
-  where VkCreateInstance = _VkCreateInstance
-
-{-# INLINE _VkCreateInstance #-}
-
-_VkCreateInstance :: CString
-_VkCreateInstance = Ptr "vkCreateInstance\NUL"##
-
-{-# INLINE is_VkCreateInstance #-}
-
-is_VkCreateInstance :: CString -> Bool
-is_VkCreateInstance = (EQ ==) . cmpCStrings _VkCreateInstance
-
-type VkCreateInstance = "vkCreateInstance"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateInstance" vkCreateInstance ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
-##else
-vkCreateInstance ::
-                 Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkInstance -- ^ pInstance
-                                                               -> IO VkResult
-vkCreateInstance
-  = unsafeDupablePerformIO (vkGetProc @VkCreateInstance)
-
-{-# NOINLINE vkCreateInstance #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
-               ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
-##else
-vkCreateInstanceSafe ::
-                     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                              ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkInstance -- ^ pInstance
-                                                                   -> IO VkResult
-vkCreateInstanceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateInstance)
-
-{-# NOINLINE vkCreateInstanceSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
---   > VkResult vkCreateInstance
---   >     ( const VkInstanceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkInstance* pInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
-type HS_vkCreateInstance =
-     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                              ->
-       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                 -> Ptr VkInstance -- ^ pInstance
-                                                   -> IO VkResult
-
-type PFN_vkCreateInstance = FunPtr HS_vkCreateInstance
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateInstance ::
-               PFN_vkCreateInstance -> HS_vkCreateInstance
-
-foreign import ccall safe "dynamic" unwrapVkCreateInstanceSafe ::
-               PFN_vkCreateInstance -> HS_vkCreateInstance
-
-instance VulkanProc "vkCreateInstance" where
-        type VkProcType "vkCreateInstance" = HS_vkCreateInstance
-        vkProcSymbol = _VkCreateInstance
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateInstance
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateInstanceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyInstance :: CString
-
-pattern VkDestroyInstance <- (is_VkDestroyInstance -> True)
-  where VkDestroyInstance = _VkDestroyInstance
-
-{-# INLINE _VkDestroyInstance #-}
-
-_VkDestroyInstance :: CString
-_VkDestroyInstance = Ptr "vkDestroyInstance\NUL"##
-
-{-# INLINE is_VkDestroyInstance #-}
-
-is_VkDestroyInstance :: CString -> Bool
-is_VkDestroyInstance = (EQ ==) . cmpCStrings _VkDestroyInstance
-
-type VkDestroyInstance = "vkDestroyInstance"
-
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyInstance" vkDestroyInstance
-               :: VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-##else
-vkDestroyInstance ::
-                  VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-vkDestroyInstance
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyInstance)
-
-{-# NOINLINE vkDestroyInstance #-}
-##endif
-
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
-               :: VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-##else
-vkDestroyInstanceSafe ::
-                      VkInstance -- ^ instance
-                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              -> IO ()
-vkDestroyInstanceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyInstance)
-
-{-# NOINLINE vkDestroyInstanceSafe #-}
-##endif
-
--- | > void vkDestroyInstance
---   >     ( VkInstance instance
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
-type HS_vkDestroyInstance =
-     VkInstance -- ^ instance
-                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> IO ()
-
-type PFN_vkDestroyInstance = FunPtr HS_vkDestroyInstance
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyInstance ::
-               PFN_vkDestroyInstance -> HS_vkDestroyInstance
-
-foreign import ccall safe "dynamic" unwrapVkDestroyInstanceSafe ::
-               PFN_vkDestroyInstance -> HS_vkDestroyInstance
-
-instance VulkanProc "vkDestroyInstance" where
-        type VkProcType "vkDestroyInstance" = HS_vkDestroyInstance
-        vkProcSymbol = _VkDestroyInstance
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyInstance
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyInstanceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumeratePhysicalDevices :: CString
-
-pattern VkEnumeratePhysicalDevices <-
-        (is_VkEnumeratePhysicalDevices -> True)
-  where VkEnumeratePhysicalDevices = _VkEnumeratePhysicalDevices
-
-{-# INLINE _VkEnumeratePhysicalDevices #-}
-
-_VkEnumeratePhysicalDevices :: CString
-_VkEnumeratePhysicalDevices = Ptr "vkEnumeratePhysicalDevices\NUL"##
-
-{-# INLINE is_VkEnumeratePhysicalDevices #-}
-
-is_VkEnumeratePhysicalDevices :: CString -> Bool
-is_VkEnumeratePhysicalDevices
-  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDevices
-
-type VkEnumeratePhysicalDevices = "vkEnumeratePhysicalDevices"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevices ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
-##else
-vkEnumeratePhysicalDevices ::
-                           VkInstance -- ^ instance
-                                      -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                    -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                            -> IO VkResult
-vkEnumeratePhysicalDevices
-  = unsafeDupablePerformIO (vkGetProc @VkEnumeratePhysicalDevices)
-
-{-# NOINLINE vkEnumeratePhysicalDevices #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevicesSafe ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
-##else
-vkEnumeratePhysicalDevicesSafe ::
-                               VkInstance -- ^ instance
-                                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                                -> IO VkResult
-vkEnumeratePhysicalDevicesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumeratePhysicalDevices)
-
-{-# NOINLINE vkEnumeratePhysicalDevicesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
---   > VkResult vkEnumeratePhysicalDevices
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceCount
---   >     , VkPhysicalDevice* pPhysicalDevices
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
-type HS_vkEnumeratePhysicalDevices =
-     VkInstance -- ^ instance
-                -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                              -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                      -> IO VkResult
-
-type PFN_vkEnumeratePhysicalDevices =
-     FunPtr HS_vkEnumeratePhysicalDevices
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumeratePhysicalDevices ::
-               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumeratePhysicalDevicesSafe ::
-               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
-
-instance VulkanProc "vkEnumeratePhysicalDevices" where
-        type VkProcType "vkEnumeratePhysicalDevices" =
-             HS_vkEnumeratePhysicalDevices
-        vkProcSymbol = _VkEnumeratePhysicalDevices
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDevices
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDevicesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceFeatures :: CString
-
-pattern VkGetPhysicalDeviceFeatures <-
-        (is_VkGetPhysicalDeviceFeatures -> True)
-  where VkGetPhysicalDeviceFeatures = _VkGetPhysicalDeviceFeatures
-
-{-# INLINE _VkGetPhysicalDeviceFeatures #-}
-
-_VkGetPhysicalDeviceFeatures :: CString
-_VkGetPhysicalDeviceFeatures
-  = Ptr "vkGetPhysicalDeviceFeatures\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceFeatures #-}
-
-is_VkGetPhysicalDeviceFeatures :: CString -> Bool
-is_VkGetPhysicalDeviceFeatures
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures
-
-type VkGetPhysicalDeviceFeatures = "vkGetPhysicalDeviceFeatures"
-
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeatures ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
-##else
-vkGetPhysicalDeviceFeatures ::
-                            VkPhysicalDevice -- ^ physicalDevice
-                                             -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                             -> IO ()
-vkGetPhysicalDeviceFeatures
-  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceFeatures)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeaturesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
-##else
-vkGetPhysicalDeviceFeaturesSafe ::
-                                VkPhysicalDevice -- ^ physicalDevice
-                                                 -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                                 -> IO ()
-vkGetPhysicalDeviceFeaturesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFeatures)
-
-{-# NOINLINE vkGetPhysicalDeviceFeaturesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceFeatures
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFeatures =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                      -> IO ()
-
-type PFN_vkGetPhysicalDeviceFeatures =
-     FunPtr HS_vkGetPhysicalDeviceFeatures
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFeatures ::
-               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFeaturesSafe ::
-               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
-
-instance VulkanProc "vkGetPhysicalDeviceFeatures" where
-        type VkProcType "vkGetPhysicalDeviceFeatures" =
-             HS_vkGetPhysicalDeviceFeatures
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeaturesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceFormatProperties <-
-        (is_VkGetPhysicalDeviceFormatProperties -> True)
-  where VkGetPhysicalDeviceFormatProperties
-          = _VkGetPhysicalDeviceFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceFormatProperties #-}
-
-_VkGetPhysicalDeviceFormatProperties :: CString
-_VkGetPhysicalDeviceFormatProperties
-  = Ptr "vkGetPhysicalDeviceFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceFormatProperties #-}
-
-is_VkGetPhysicalDeviceFormatProperties :: CString -> Bool
-is_VkGetPhysicalDeviceFormatProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties
-
-type VkGetPhysicalDeviceFormatProperties =
-     "vkGetPhysicalDeviceFormatProperties"
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
-##else
-vkGetPhysicalDeviceFormatProperties ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     -> VkFormat -- ^ format
-                                                                 -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceFormatProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
-##else
-vkGetPhysicalDeviceFormatPropertiesSafe ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          VkFormat -- ^ format
-                                                   -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceFormatPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> VkFormat -- ^ format
-                                  -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                            -> IO ()
-
-type PFN_vkGetPhysicalDeviceFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceFormatProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties ::
-               PFN_vkGetPhysicalDeviceFormatProperties ->
-                 HS_vkGetPhysicalDeviceFormatProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceFormatProperties ->
-                 HS_vkGetPhysicalDeviceFormatProperties
-
-instance VulkanProc "vkGetPhysicalDeviceFormatProperties" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties" =
-             HS_vkGetPhysicalDeviceFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFormatPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceImageFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceImageFormatProperties <-
-        (is_VkGetPhysicalDeviceImageFormatProperties -> True)
-  where VkGetPhysicalDeviceImageFormatProperties
-          = _VkGetPhysicalDeviceImageFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceImageFormatProperties #-}
-
-_VkGetPhysicalDeviceImageFormatProperties :: CString
-_VkGetPhysicalDeviceImageFormatProperties
-  = Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties #-}
-
-is_VkGetPhysicalDeviceImageFormatProperties :: CString -> Bool
-is_VkGetPhysicalDeviceImageFormatProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties
-
-type VkGetPhysicalDeviceImageFormatProperties =
-     "vkGetPhysicalDeviceImageFormatProperties"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
-##else
-vkGetPhysicalDeviceImageFormatProperties ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           VkFormat -- ^ format
-                                                    ->
-                                             VkImageType -- ^ type
-                                                         ->
-                                               VkImageTiling -- ^ tiling
-                                                             ->
-                                                 VkImageUsageFlags -- ^ usage
-                                                                   ->
-                                                   VkImageCreateFlags -- ^ flags
-                                                                      ->
-                                                     Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                 -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
-##else
-vkGetPhysicalDeviceImageFormatPropertiesSafe ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               VkFormat -- ^ format
-                                                        ->
-                                                 VkImageType -- ^ type
-                                                             ->
-                                                   VkImageTiling -- ^ tiling
-                                                                 ->
-                                                     VkImageUsageFlags -- ^ usage
-                                                                       ->
-                                                       VkImageCreateFlags -- ^ flags
-                                                                          ->
-                                                         Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                     -> IO VkResult
-vkGetPhysicalDeviceImageFormatPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
---   > VkResult vkGetPhysicalDeviceImageFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkImageType type
---   >     , VkImageTiling tiling
---   >     , VkImageUsageFlags usage
---   >     , VkImageCreateFlags flags
---   >     , VkImageFormatProperties* pImageFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceImageFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       VkFormat -- ^ format
-                ->
-         VkImageType -- ^ type
-                     ->
-           VkImageTiling -- ^ tiling
-                         ->
-             VkImageUsageFlags -- ^ usage
-                               ->
-               VkImageCreateFlags -- ^ flags
-                                  -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                 -> IO VkResult
-
-type PFN_vkGetPhysicalDeviceImageFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties
-
-instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties" =
-             HS_vkGetPhysicalDeviceImageFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceImageFormatProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceProperties :: CString
-
-pattern VkGetPhysicalDeviceProperties <-
-        (is_VkGetPhysicalDeviceProperties -> True)
-  where VkGetPhysicalDeviceProperties
-          = _VkGetPhysicalDeviceProperties
-
-{-# INLINE _VkGetPhysicalDeviceProperties #-}
-
-_VkGetPhysicalDeviceProperties :: CString
-_VkGetPhysicalDeviceProperties
-  = Ptr "vkGetPhysicalDeviceProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceProperties #-}
-
-is_VkGetPhysicalDeviceProperties :: CString -> Bool
-is_VkGetPhysicalDeviceProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties
-
-type VkGetPhysicalDeviceProperties =
-     "vkGetPhysicalDeviceProperties"
-
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDeviceProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
-##else
-vkGetPhysicalDeviceProperties ::
-                              VkPhysicalDevice -- ^ physicalDevice
-                                               -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceProperties
-  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDevicePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
-##else
-vkGetPhysicalDevicePropertiesSafe ::
-                                  VkPhysicalDevice -- ^ physicalDevice
-                                                   -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                     -> IO ()
-vkGetPhysicalDevicePropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceProperties)
-
-{-# NOINLINE vkGetPhysicalDevicePropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                        -> IO ()
-
-type PFN_vkGetPhysicalDeviceProperties =
-     FunPtr HS_vkGetPhysicalDeviceProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceProperties ::
-               PFN_vkGetPhysicalDeviceProperties ->
-                 HS_vkGetPhysicalDeviceProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDevicePropertiesSafe ::
-               PFN_vkGetPhysicalDeviceProperties ->
-                 HS_vkGetPhysicalDeviceProperties
-
-instance VulkanProc "vkGetPhysicalDeviceProperties" where
-        type VkProcType "vkGetPhysicalDeviceProperties" =
-             HS_vkGetPhysicalDeviceProperties
-        vkProcSymbol = _VkGetPhysicalDeviceProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDevicePropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties :: CString
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties <-
-        (is_VkGetPhysicalDeviceQueueFamilyProperties -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties
-          = _VkGetPhysicalDeviceQueueFamilyProperties
-
-{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties #-}
-
-_VkGetPhysicalDeviceQueueFamilyProperties :: CString
-_VkGetPhysicalDeviceQueueFamilyProperties
-  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties #-}
-
-is_VkGetPhysicalDeviceQueueFamilyProperties :: CString -> Bool
-is_VkGetPhysicalDeviceQueueFamilyProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties
-
-type VkGetPhysicalDeviceQueueFamilyProperties =
-     "vkGetPhysicalDeviceQueueFamilyProperties"
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceQueueFamilyProperties ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                      -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                     -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                          -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceQueueFamilyPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceQueueFamilyProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceQueueFamilyProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                  -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                 -> IO ()
-
-type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
-     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceQueueFamilyProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceMemoryProperties :: CString
-
-pattern VkGetPhysicalDeviceMemoryProperties <-
-        (is_VkGetPhysicalDeviceMemoryProperties -> True)
-  where VkGetPhysicalDeviceMemoryProperties
-          = _VkGetPhysicalDeviceMemoryProperties
-
-{-# INLINE _VkGetPhysicalDeviceMemoryProperties #-}
-
-_VkGetPhysicalDeviceMemoryProperties :: CString
-_VkGetPhysicalDeviceMemoryProperties
-  = Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceMemoryProperties #-}
-
-is_VkGetPhysicalDeviceMemoryProperties :: CString -> Bool
-is_VkGetPhysicalDeviceMemoryProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties
-
-type VkGetPhysicalDeviceMemoryProperties =
-     "vkGetPhysicalDeviceMemoryProperties"
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
-##else
-vkGetPhysicalDeviceMemoryProperties ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     ->
-                                      Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                           -> IO ()
-vkGetPhysicalDeviceMemoryProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceMemoryProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
-##else
-vkGetPhysicalDeviceMemoryPropertiesSafe ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceMemoryPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceMemoryProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceMemoryProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                              -> IO ()
-
-type PFN_vkGetPhysicalDeviceMemoryProperties =
-     FunPtr HS_vkGetPhysicalDeviceMemoryProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties ::
-               PFN_vkGetPhysicalDeviceMemoryProperties ->
-                 HS_vkGetPhysicalDeviceMemoryProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceMemoryProperties ->
-                 HS_vkGetPhysicalDeviceMemoryProperties
-
-instance VulkanProc "vkGetPhysicalDeviceMemoryProperties" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties" =
-             HS_vkGetPhysicalDeviceMemoryProperties
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceMemoryPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetInstanceProcAddr :: CString
-
-pattern VkGetInstanceProcAddr <- (is_VkGetInstanceProcAddr -> True)
-  where VkGetInstanceProcAddr = _VkGetInstanceProcAddr
-
-{-# INLINE _VkGetInstanceProcAddr #-}
-
-_VkGetInstanceProcAddr :: CString
-_VkGetInstanceProcAddr = Ptr "vkGetInstanceProcAddr\NUL"##
-
-{-# INLINE is_VkGetInstanceProcAddr #-}
-
-is_VkGetInstanceProcAddr :: CString -> Bool
-is_VkGetInstanceProcAddr
-  = (EQ ==) . cmpCStrings _VkGetInstanceProcAddr
-
-type VkGetInstanceProcAddr = "vkGetInstanceProcAddr"
-
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddr ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
-##else
-vkGetInstanceProcAddr ::
-                      VkInstance -- ^ instance
-                                 -> CString -- ^ pName
-                                            -> IO PFN_vkVoidFunction
-vkGetInstanceProcAddr
-  = unsafeDupablePerformIO (vkGetProc @VkGetInstanceProcAddr)
-
-{-# NOINLINE vkGetInstanceProcAddr #-}
-##endif
-
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddrSafe ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
-##else
-vkGetInstanceProcAddrSafe ::
-                          VkInstance -- ^ instance
-                                     -> CString -- ^ pName
-                                                -> IO PFN_vkVoidFunction
-vkGetInstanceProcAddrSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetInstanceProcAddr)
-
-{-# NOINLINE vkGetInstanceProcAddrSafe #-}
-##endif
-
--- | > PFN_vkVoidFunction vkGetInstanceProcAddr
---   >     ( VkInstance instance
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
-type HS_vkGetInstanceProcAddr =
-     VkInstance -- ^ instance
-                -> CString -- ^ pName
-                           -> IO PFN_vkVoidFunction
-
-type PFN_vkGetInstanceProcAddr = FunPtr HS_vkGetInstanceProcAddr
-
-foreign import ccall unsafe "dynamic" unwrapVkGetInstanceProcAddr
-               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
-
-foreign import ccall safe "dynamic" unwrapVkGetInstanceProcAddrSafe
-               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
-
-instance VulkanProc "vkGetInstanceProcAddr" where
-        type VkProcType "vkGetInstanceProcAddr" = HS_vkGetInstanceProcAddr
-        vkProcSymbol = _VkGetInstanceProcAddr
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetInstanceProcAddr
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetInstanceProcAddrSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetDeviceProcAddr :: CString
-
-pattern VkGetDeviceProcAddr <- (is_VkGetDeviceProcAddr -> True)
-  where VkGetDeviceProcAddr = _VkGetDeviceProcAddr
-
-{-# INLINE _VkGetDeviceProcAddr #-}
-
-_VkGetDeviceProcAddr :: CString
-_VkGetDeviceProcAddr = Ptr "vkGetDeviceProcAddr\NUL"##
-
-{-# INLINE is_VkGetDeviceProcAddr #-}
-
-is_VkGetDeviceProcAddr :: CString -> Bool
-is_VkGetDeviceProcAddr = (EQ ==) . cmpCStrings _VkGetDeviceProcAddr
-
-type VkGetDeviceProcAddr = "vkGetDeviceProcAddr"
-
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddr :: VkDevice -- ^ device
-                                               -> CString -- ^ pName
-                                                          -> IO PFN_vkVoidFunction
-
-##else
-vkGetDeviceProcAddr :: VkDevice -- ^ device
-                                -> CString -- ^ pName
-                                           -> IO PFN_vkVoidFunction
-vkGetDeviceProcAddr
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceProcAddr)
-
-{-# NOINLINE vkGetDeviceProcAddr #-}
-##endif
-
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddrSafe ::
-               VkDevice -- ^ device
-                        -> CString -- ^ pName
-                                   -> IO PFN_vkVoidFunction
-
-##else
-vkGetDeviceProcAddrSafe ::
-                        VkDevice -- ^ device
-                                 -> CString -- ^ pName
-                                            -> IO PFN_vkVoidFunction
-vkGetDeviceProcAddrSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceProcAddr)
-
-{-# NOINLINE vkGetDeviceProcAddrSafe #-}
-##endif
-
--- | > PFN_vkVoidFunction vkGetDeviceProcAddr
---   >     ( VkDevice device
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
-type HS_vkGetDeviceProcAddr =
-     VkDevice -- ^ device
-              -> CString -- ^ pName
-                         -> IO PFN_vkVoidFunction
-
-type PFN_vkGetDeviceProcAddr = FunPtr HS_vkGetDeviceProcAddr
-
-foreign import ccall unsafe "dynamic" unwrapVkGetDeviceProcAddr ::
-               PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
-
-foreign import ccall safe "dynamic" unwrapVkGetDeviceProcAddrSafe
-               :: PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
-
-instance VulkanProc "vkGetDeviceProcAddr" where
-        type VkProcType "vkGetDeviceProcAddr" = HS_vkGetDeviceProcAddr
-        vkProcSymbol = _VkGetDeviceProcAddr
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceProcAddr
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceProcAddrSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateDevice :: CString
-
-pattern VkCreateDevice <- (is_VkCreateDevice -> True)
-  where VkCreateDevice = _VkCreateDevice
-
-{-# INLINE _VkCreateDevice #-}
-
-_VkCreateDevice :: CString
-_VkCreateDevice = Ptr "vkCreateDevice\NUL"##
-
-{-# INLINE is_VkCreateDevice #-}
-
-is_VkCreateDevice :: CString -> Bool
-is_VkCreateDevice = (EQ ==) . cmpCStrings _VkCreateDevice
-
-type VkCreateDevice = "vkCreateDevice"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateDevice" vkCreateDevice ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
-##else
-vkCreateDevice ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-vkCreateDevice = unsafeDupablePerformIO (vkGetProc @VkCreateDevice)
-
-{-# NOINLINE vkCreateDevice #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
-##else
-vkCreateDeviceSafe ::
-                   VkPhysicalDevice -- ^ physicalDevice
-                                    ->
-                     Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                            ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkDevice -- ^ pDevice
-                                                                 -> IO VkResult
-vkCreateDeviceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDevice)
-
-{-# NOINLINE vkCreateDeviceSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkCreateDevice
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkDeviceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDevice* pDevice
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
-type HS_vkCreateDevice =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDevice -- ^ pDevice
-                                                   -> IO VkResult
-
-type PFN_vkCreateDevice = FunPtr HS_vkCreateDevice
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateDevice ::
-               PFN_vkCreateDevice -> HS_vkCreateDevice
-
-foreign import ccall safe "dynamic" unwrapVkCreateDeviceSafe ::
-               PFN_vkCreateDevice -> HS_vkCreateDevice
-
-instance VulkanProc "vkCreateDevice" where
-        type VkProcType "vkCreateDevice" = HS_vkCreateDevice
-        vkProcSymbol = _VkCreateDevice
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDevice
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDeviceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDevice :: CString
-
-pattern VkDestroyDevice <- (is_VkDestroyDevice -> True)
-  where VkDestroyDevice = _VkDestroyDevice
-
-{-# INLINE _VkDestroyDevice #-}
-
-_VkDestroyDevice :: CString
-_VkDestroyDevice = Ptr "vkDestroyDevice\NUL"##
-
-{-# INLINE is_VkDestroyDevice #-}
-
-is_VkDestroyDevice :: CString -> Bool
-is_VkDestroyDevice = (EQ ==) . cmpCStrings _VkDestroyDevice
-
-type VkDestroyDevice = "vkDestroyDevice"
-
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyDevice" vkDestroyDevice ::
-               VkDevice -- ^ device
-                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> IO ()
-
-##else
-vkDestroyDevice :: VkDevice -- ^ device
-                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> IO ()
-vkDestroyDevice
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyDevice)
-
-{-# NOINLINE vkDestroyDevice #-}
-##endif
-
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
-               VkDevice -- ^ device
-                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> IO ()
-
-##else
-vkDestroyDeviceSafe ::
-                    VkDevice -- ^ device
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-vkDestroyDeviceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDevice)
-
-{-# NOINLINE vkDestroyDeviceSafe #-}
-##endif
-
--- | > void vkDestroyDevice
---   >     ( VkDevice device
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
-type HS_vkDestroyDevice =
-     VkDevice -- ^ device
-              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> IO ()
-
-type PFN_vkDestroyDevice = FunPtr HS_vkDestroyDevice
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyDevice ::
-               PFN_vkDestroyDevice -> HS_vkDestroyDevice
-
-foreign import ccall safe "dynamic" unwrapVkDestroyDeviceSafe ::
-               PFN_vkDestroyDevice -> HS_vkDestroyDevice
-
-instance VulkanProc "vkDestroyDevice" where
-        type VkProcType "vkDestroyDevice" = HS_vkDestroyDevice
-        vkProcSymbol = _VkDestroyDevice
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDevice
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDeviceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateInstanceExtensionProperties :: CString
-
-pattern VkEnumerateInstanceExtensionProperties <-
-        (is_VkEnumerateInstanceExtensionProperties -> True)
-  where VkEnumerateInstanceExtensionProperties
-          = _VkEnumerateInstanceExtensionProperties
-
-{-# INLINE _VkEnumerateInstanceExtensionProperties #-}
-
-_VkEnumerateInstanceExtensionProperties :: CString
-_VkEnumerateInstanceExtensionProperties
-  = Ptr "vkEnumerateInstanceExtensionProperties\NUL"##
-
-{-# INLINE is_VkEnumerateInstanceExtensionProperties #-}
-
-is_VkEnumerateInstanceExtensionProperties :: CString -> Bool
-is_VkEnumerateInstanceExtensionProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceExtensionProperties
-
-type VkEnumerateInstanceExtensionProperties =
-     "vkEnumerateInstanceExtensionProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionProperties ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
-##else
-vkEnumerateInstanceExtensionProperties ::
-                                       CString -- ^ pLayerName
-                                               ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                 -> IO VkResult
-vkEnumerateInstanceExtensionProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateInstanceExtensionProperties)
-
-{-# NOINLINE vkEnumerateInstanceExtensionProperties #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionPropertiesSafe ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
-##else
-vkEnumerateInstanceExtensionPropertiesSafe ::
-                                           CString -- ^ pLayerName
-                                                   ->
-                                             Ptr Word32 -- ^ pPropertyCount
-                                                        -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                     -> IO VkResult
-vkEnumerateInstanceExtensionPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateInstanceExtensionProperties)
-
-{-# NOINLINE vkEnumerateInstanceExtensionPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
---   > VkResult vkEnumerateInstanceExtensionProperties
---   >     ( const char* pLayerName
---   >     , uint32_t* pPropertyCount
---   >     , VkExtensionProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
-type HS_vkEnumerateInstanceExtensionProperties =
-     CString -- ^ pLayerName
-             -> Ptr Word32 -- ^ pPropertyCount
-                           -> Ptr VkExtensionProperties -- ^ pProperties
-                                                        -> IO VkResult
-
-type PFN_vkEnumerateInstanceExtensionProperties =
-     FunPtr HS_vkEnumerateInstanceExtensionProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateInstanceExtensionProperties ::
-               PFN_vkEnumerateInstanceExtensionProperties ->
-                 HS_vkEnumerateInstanceExtensionProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateInstanceExtensionPropertiesSafe ::
-               PFN_vkEnumerateInstanceExtensionProperties ->
-                 HS_vkEnumerateInstanceExtensionProperties
-
-instance VulkanProc "vkEnumerateInstanceExtensionProperties" where
-        type VkProcType "vkEnumerateInstanceExtensionProperties" =
-             HS_vkEnumerateInstanceExtensionProperties
-        vkProcSymbol = _VkEnumerateInstanceExtensionProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateInstanceExtensionProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkEnumerateInstanceExtensionPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateDeviceExtensionProperties :: CString
-
-pattern VkEnumerateDeviceExtensionProperties <-
-        (is_VkEnumerateDeviceExtensionProperties -> True)
-  where VkEnumerateDeviceExtensionProperties
-          = _VkEnumerateDeviceExtensionProperties
-
-{-# INLINE _VkEnumerateDeviceExtensionProperties #-}
-
-_VkEnumerateDeviceExtensionProperties :: CString
-_VkEnumerateDeviceExtensionProperties
-  = Ptr "vkEnumerateDeviceExtensionProperties\NUL"##
-
-{-# INLINE is_VkEnumerateDeviceExtensionProperties #-}
-
-is_VkEnumerateDeviceExtensionProperties :: CString -> Bool
-is_VkEnumerateDeviceExtensionProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateDeviceExtensionProperties
-
-type VkEnumerateDeviceExtensionProperties =
-     "vkEnumerateDeviceExtensionProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
-##else
-vkEnumerateDeviceExtensionProperties ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       CString -- ^ pLayerName
-                                               ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                 -> IO VkResult
-vkEnumerateDeviceExtensionProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateDeviceExtensionProperties)
-
-{-# NOINLINE vkEnumerateDeviceExtensionProperties #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
-##else
-vkEnumerateDeviceExtensionPropertiesSafe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           CString -- ^ pLayerName
-                                                   ->
-                                             Ptr Word32 -- ^ pPropertyCount
-                                                        -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                     -> IO VkResult
-vkEnumerateDeviceExtensionPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateDeviceExtensionProperties)
-
-{-# NOINLINE vkEnumerateDeviceExtensionPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
---   > VkResult vkEnumerateDeviceExtensionProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const char* pLayerName
---   >     , uint32_t* pPropertyCount
---   >     , VkExtensionProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
-type HS_vkEnumerateDeviceExtensionProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       CString -- ^ pLayerName
-               -> Ptr Word32 -- ^ pPropertyCount
-                             -> Ptr VkExtensionProperties -- ^ pProperties
-                                                          -> IO VkResult
-
-type PFN_vkEnumerateDeviceExtensionProperties =
-     FunPtr HS_vkEnumerateDeviceExtensionProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateDeviceExtensionProperties ::
-               PFN_vkEnumerateDeviceExtensionProperties ->
-                 HS_vkEnumerateDeviceExtensionProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateDeviceExtensionPropertiesSafe ::
-               PFN_vkEnumerateDeviceExtensionProperties ->
-                 HS_vkEnumerateDeviceExtensionProperties
-
-instance VulkanProc "vkEnumerateDeviceExtensionProperties" where
-        type VkProcType "vkEnumerateDeviceExtensionProperties" =
-             HS_vkEnumerateDeviceExtensionProperties
-        vkProcSymbol = _VkEnumerateDeviceExtensionProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateDeviceExtensionProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkEnumerateDeviceExtensionPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateInstanceLayerProperties :: CString
-
-pattern VkEnumerateInstanceLayerProperties <-
-        (is_VkEnumerateInstanceLayerProperties -> True)
-  where VkEnumerateInstanceLayerProperties
-          = _VkEnumerateInstanceLayerProperties
-
-{-# INLINE _VkEnumerateInstanceLayerProperties #-}
-
-_VkEnumerateInstanceLayerProperties :: CString
-_VkEnumerateInstanceLayerProperties
-  = Ptr "vkEnumerateInstanceLayerProperties\NUL"##
-
-{-# INLINE is_VkEnumerateInstanceLayerProperties #-}
-
-is_VkEnumerateInstanceLayerProperties :: CString -> Bool
-is_VkEnumerateInstanceLayerProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceLayerProperties
-
-type VkEnumerateInstanceLayerProperties =
-     "vkEnumerateInstanceLayerProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerProperties ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
-##else
-vkEnumerateInstanceLayerProperties ::
-                                   Ptr Word32 -- ^ pPropertyCount
-                                              -> Ptr VkLayerProperties -- ^ pProperties
-                                                                       -> IO VkResult
-vkEnumerateInstanceLayerProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateInstanceLayerProperties)
-
-{-# NOINLINE vkEnumerateInstanceLayerProperties #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerPropertiesSafe ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
-##else
-vkEnumerateInstanceLayerPropertiesSafe ::
-                                       Ptr Word32 -- ^ pPropertyCount
-                                                  -> Ptr VkLayerProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateInstanceLayerPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateInstanceLayerProperties)
-
-{-# NOINLINE vkEnumerateInstanceLayerPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEnumerateInstanceLayerProperties
---   >     ( uint32_t* pPropertyCount
---   >     , VkLayerProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
-type HS_vkEnumerateInstanceLayerProperties =
-     Ptr Word32 -- ^ pPropertyCount
-                -> Ptr VkLayerProperties -- ^ pProperties
-                                         -> IO VkResult
-
-type PFN_vkEnumerateInstanceLayerProperties =
-     FunPtr HS_vkEnumerateInstanceLayerProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateInstanceLayerProperties ::
-               PFN_vkEnumerateInstanceLayerProperties ->
-                 HS_vkEnumerateInstanceLayerProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateInstanceLayerPropertiesSafe ::
-               PFN_vkEnumerateInstanceLayerProperties ->
-                 HS_vkEnumerateInstanceLayerProperties
-
-instance VulkanProc "vkEnumerateInstanceLayerProperties" where
-        type VkProcType "vkEnumerateInstanceLayerProperties" =
-             HS_vkEnumerateInstanceLayerProperties
-        vkProcSymbol = _VkEnumerateInstanceLayerProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateInstanceLayerProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceLayerPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateDeviceLayerProperties :: CString
-
-pattern VkEnumerateDeviceLayerProperties <-
-        (is_VkEnumerateDeviceLayerProperties -> True)
-  where VkEnumerateDeviceLayerProperties
-          = _VkEnumerateDeviceLayerProperties
-
-{-# INLINE _VkEnumerateDeviceLayerProperties #-}
-
-_VkEnumerateDeviceLayerProperties :: CString
-_VkEnumerateDeviceLayerProperties
-  = Ptr "vkEnumerateDeviceLayerProperties\NUL"##
-
-{-# INLINE is_VkEnumerateDeviceLayerProperties #-}
-
-is_VkEnumerateDeviceLayerProperties :: CString -> Bool
-is_VkEnumerateDeviceLayerProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateDeviceLayerProperties
-
-type VkEnumerateDeviceLayerProperties =
-     "vkEnumerateDeviceLayerProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
-##else
-vkEnumerateDeviceLayerProperties ::
-                                 VkPhysicalDevice -- ^ physicalDevice
-                                                  ->
-                                   Ptr Word32 -- ^ pPropertyCount
-                                              -> Ptr VkLayerProperties -- ^ pProperties
-                                                                       -> IO VkResult
-vkEnumerateDeviceLayerProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateDeviceLayerProperties)
-
-{-# NOINLINE vkEnumerateDeviceLayerProperties #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
-##else
-vkEnumerateDeviceLayerPropertiesSafe ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Ptr Word32 -- ^ pPropertyCount
-                                                  -> Ptr VkLayerProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateDeviceLayerPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateDeviceLayerProperties)
-
-{-# NOINLINE vkEnumerateDeviceLayerPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEnumerateDeviceLayerProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pPropertyCount
---   >     , VkLayerProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
-type HS_vkEnumerateDeviceLayerProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pPropertyCount
-                  -> Ptr VkLayerProperties -- ^ pProperties
-                                           -> IO VkResult
-
-type PFN_vkEnumerateDeviceLayerProperties =
-     FunPtr HS_vkEnumerateDeviceLayerProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateDeviceLayerProperties ::
-               PFN_vkEnumerateDeviceLayerProperties ->
-                 HS_vkEnumerateDeviceLayerProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateDeviceLayerPropertiesSafe ::
-               PFN_vkEnumerateDeviceLayerProperties ->
-                 HS_vkEnumerateDeviceLayerProperties
-
-instance VulkanProc "vkEnumerateDeviceLayerProperties" where
-        type VkProcType "vkEnumerateDeviceLayerProperties" =
-             HS_vkEnumerateDeviceLayerProperties
-        vkProcSymbol = _VkEnumerateDeviceLayerProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateDeviceLayerProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumerateDeviceLayerPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetDeviceQueue :: CString
-
-pattern VkGetDeviceQueue <- (is_VkGetDeviceQueue -> True)
-  where VkGetDeviceQueue = _VkGetDeviceQueue
-
-{-# INLINE _VkGetDeviceQueue #-}
-
-_VkGetDeviceQueue :: CString
-_VkGetDeviceQueue = Ptr "vkGetDeviceQueue\NUL"##
-
-{-# INLINE is_VkGetDeviceQueue #-}
-
-is_VkGetDeviceQueue :: CString -> Bool
-is_VkGetDeviceQueue = (EQ ==) . cmpCStrings _VkGetDeviceQueue
-
-type VkGetDeviceQueue = "vkGetDeviceQueue"
-
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetDeviceQueue" vkGetDeviceQueue ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ queueFamilyIndex
-                                  -> Word32 -- ^ queueIndex
-                                            -> Ptr VkQueue -- ^ pQueue
-                                                           -> IO ()
-
-##else
-vkGetDeviceQueue ::
-                 VkDevice -- ^ device
-                          -> Word32 -- ^ queueFamilyIndex
-                                    -> Word32 -- ^ queueIndex
-                                              -> Ptr VkQueue -- ^ pQueue
-                                                             -> IO ()
-vkGetDeviceQueue
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceQueue)
-
-{-# NOINLINE vkGetDeviceQueue #-}
-##endif
-
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
-               :: VkDevice -- ^ device
-                           -> Word32 -- ^ queueFamilyIndex
-                                     -> Word32 -- ^ queueIndex
-                                               -> Ptr VkQueue -- ^ pQueue
-                                                              -> IO ()
-
-##else
-vkGetDeviceQueueSafe ::
-                     VkDevice -- ^ device
-                              -> Word32 -- ^ queueFamilyIndex
-                                        -> Word32 -- ^ queueIndex
-                                                  -> Ptr VkQueue -- ^ pQueue
-                                                                 -> IO ()
-vkGetDeviceQueueSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue)
-
-{-# NOINLINE vkGetDeviceQueueSafe #-}
-##endif
-
--- | > void vkGetDeviceQueue
---   >     ( VkDevice device
---   >     , uint32_t queueFamilyIndex
---   >     , uint32_t queueIndex
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
-type HS_vkGetDeviceQueue =
-     VkDevice -- ^ device
-              -> Word32 -- ^ queueFamilyIndex
-                        -> Word32 -- ^ queueIndex
-                                  -> Ptr VkQueue -- ^ pQueue
-                                                 -> IO ()
-
-type PFN_vkGetDeviceQueue = FunPtr HS_vkGetDeviceQueue
-
-foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue ::
-               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
-
-foreign import ccall safe "dynamic" unwrapVkGetDeviceQueueSafe ::
-               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
-
-instance VulkanProc "vkGetDeviceQueue" where
-        type VkProcType "vkGetDeviceQueue" = HS_vkGetDeviceQueue
-        vkProcSymbol = _VkGetDeviceQueue
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceQueue
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueueSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkQueueSubmit :: CString
-
-pattern VkQueueSubmit <- (is_VkQueueSubmit -> True)
-  where VkQueueSubmit = _VkQueueSubmit
-
-{-# INLINE _VkQueueSubmit #-}
-
-_VkQueueSubmit :: CString
-_VkQueueSubmit = Ptr "vkQueueSubmit\NUL"##
-
-{-# INLINE is_VkQueueSubmit #-}
-
-is_VkQueueSubmit :: CString -> Bool
-is_VkQueueSubmit = (EQ ==) . cmpCStrings _VkQueueSubmit
-
-type VkQueueSubmit = "vkQueueSubmit"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmit ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
-##else
-vkQueueSubmit ::
-              VkQueue -- ^ queue
-                      -> Word32 -- ^ submitCount
-                                -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                    -> VkFence -- ^ fence
-                                                               -> IO VkResult
-vkQueueSubmit = unsafeDupablePerformIO (vkGetProc @VkQueueSubmit)
-
-{-# NOINLINE vkQueueSubmit #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
-##else
-vkQueueSubmitSafe ::
-                  VkQueue -- ^ queue
-                          -> Word32 -- ^ submitCount
-                                    -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                        -> VkFence -- ^ fence
-                                                                   -> IO VkResult
-vkQueueSubmitSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueSubmit)
-
-{-# NOINLINE vkQueueSubmitSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkQueueSubmit
---   >     ( VkQueue queue
---   >     , uint32_t submitCount
---   >     , const VkSubmitInfo* pSubmits
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
-type HS_vkQueueSubmit =
-     VkQueue -- ^ queue
-             -> Word32 -- ^ submitCount
-                       -> Ptr VkSubmitInfo -- ^ pSubmits
-                                           -> VkFence -- ^ fence
-                                                      -> IO VkResult
-
-type PFN_vkQueueSubmit = FunPtr HS_vkQueueSubmit
-
-foreign import ccall unsafe "dynamic" unwrapVkQueueSubmit ::
-               PFN_vkQueueSubmit -> HS_vkQueueSubmit
-
-foreign import ccall safe "dynamic" unwrapVkQueueSubmitSafe ::
-               PFN_vkQueueSubmit -> HS_vkQueueSubmit
-
-instance VulkanProc "vkQueueSubmit" where
-        type VkProcType "vkQueueSubmit" = HS_vkQueueSubmit
-        vkProcSymbol = _VkQueueSubmit
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueSubmit
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueSubmitSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkQueueWaitIdle :: CString
-
-pattern VkQueueWaitIdle <- (is_VkQueueWaitIdle -> True)
-  where VkQueueWaitIdle = _VkQueueWaitIdle
-
-{-# INLINE _VkQueueWaitIdle #-}
-
-_VkQueueWaitIdle :: CString
-_VkQueueWaitIdle = Ptr "vkQueueWaitIdle\NUL"##
-
-{-# INLINE is_VkQueueWaitIdle #-}
-
-is_VkQueueWaitIdle :: CString -> Bool
-is_VkQueueWaitIdle = (EQ ==) . cmpCStrings _VkQueueWaitIdle
-
-type VkQueueWaitIdle = "vkQueueWaitIdle"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdle ::
-               VkQueue -- ^ queue
-                       -> IO VkResult
-
-##else
-vkQueueWaitIdle :: VkQueue -- ^ queue
-                           -> IO VkResult
-vkQueueWaitIdle
-  = unsafeDupablePerformIO (vkGetProc @VkQueueWaitIdle)
-
-{-# NOINLINE vkQueueWaitIdle #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
-               VkQueue -- ^ queue
-                       -> IO VkResult
-
-##else
-vkQueueWaitIdleSafe :: VkQueue -- ^ queue
-                               -> IO VkResult
-vkQueueWaitIdleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueWaitIdle)
-
-{-# NOINLINE vkQueueWaitIdleSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkQueueWaitIdle
---   >     ( VkQueue queue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
-type HS_vkQueueWaitIdle = VkQueue -- ^ queue
-                                  -> IO VkResult
-
-type PFN_vkQueueWaitIdle = FunPtr HS_vkQueueWaitIdle
-
-foreign import ccall unsafe "dynamic" unwrapVkQueueWaitIdle ::
-               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
-
-foreign import ccall safe "dynamic" unwrapVkQueueWaitIdleSafe ::
-               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
-
-instance VulkanProc "vkQueueWaitIdle" where
-        type VkProcType "vkQueueWaitIdle" = HS_vkQueueWaitIdle
-        vkProcSymbol = _VkQueueWaitIdle
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueWaitIdle
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueWaitIdleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDeviceWaitIdle :: CString
-
-pattern VkDeviceWaitIdle <- (is_VkDeviceWaitIdle -> True)
-  where VkDeviceWaitIdle = _VkDeviceWaitIdle
-
-{-# INLINE _VkDeviceWaitIdle #-}
-
-_VkDeviceWaitIdle :: CString
-_VkDeviceWaitIdle = Ptr "vkDeviceWaitIdle\NUL"##
-
-{-# INLINE is_VkDeviceWaitIdle #-}
-
-is_VkDeviceWaitIdle :: CString -> Bool
-is_VkDeviceWaitIdle = (EQ ==) . cmpCStrings _VkDeviceWaitIdle
-
-type VkDeviceWaitIdle = "vkDeviceWaitIdle"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDeviceWaitIdle" vkDeviceWaitIdle ::
-               VkDevice -- ^ device
-                        -> IO VkResult
-
-##else
-vkDeviceWaitIdle :: VkDevice -- ^ device
-                             -> IO VkResult
-vkDeviceWaitIdle
-  = unsafeDupablePerformIO (vkGetProc @VkDeviceWaitIdle)
-
-{-# NOINLINE vkDeviceWaitIdle #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
-               :: VkDevice -- ^ device
-                           -> IO VkResult
-
-##else
-vkDeviceWaitIdleSafe :: VkDevice -- ^ device
-                                 -> IO VkResult
-vkDeviceWaitIdleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDeviceWaitIdle)
-
-{-# NOINLINE vkDeviceWaitIdleSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkDeviceWaitIdle
---   >     ( VkDevice device
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
-type HS_vkDeviceWaitIdle = VkDevice -- ^ device
-                                    -> IO VkResult
-
-type PFN_vkDeviceWaitIdle = FunPtr HS_vkDeviceWaitIdle
-
-foreign import ccall unsafe "dynamic" unwrapVkDeviceWaitIdle ::
-               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
-
-foreign import ccall safe "dynamic" unwrapVkDeviceWaitIdleSafe ::
-               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
-
-instance VulkanProc "vkDeviceWaitIdle" where
-        type VkProcType "vkDeviceWaitIdle" = HS_vkDeviceWaitIdle
-        vkProcSymbol = _VkDeviceWaitIdle
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDeviceWaitIdle
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDeviceWaitIdleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkAllocateMemory :: CString
-
-pattern VkAllocateMemory <- (is_VkAllocateMemory -> True)
-  where VkAllocateMemory = _VkAllocateMemory
-
-{-# INLINE _VkAllocateMemory #-}
-
-_VkAllocateMemory :: CString
-_VkAllocateMemory = Ptr "vkAllocateMemory\NUL"##
-
-{-# INLINE is_VkAllocateMemory #-}
-
-is_VkAllocateMemory :: CString -> Bool
-is_VkAllocateMemory = (EQ ==) . cmpCStrings _VkAllocateMemory
-
-type VkAllocateMemory = "vkAllocateMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkAllocateMemory" vkAllocateMemory ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
-##else
-vkAllocateMemory ::
-                 VkDevice -- ^ device
-                          ->
-                   Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                            ->
-                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                               -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                     -> IO VkResult
-vkAllocateMemory
-  = unsafeDupablePerformIO (vkGetProc @VkAllocateMemory)
-
-{-# NOINLINE vkAllocateMemory #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
-##else
-vkAllocateMemorySafe ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                                ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                         -> IO VkResult
-vkAllocateMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateMemory)
-
-{-# NOINLINE vkAllocateMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
---   > VkResult vkAllocateMemory
---   >     ( VkDevice device
---   >     , const VkMemoryAllocateInfo* pAllocateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDeviceMemory* pMemory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
-type HS_vkAllocateMemory =
-     VkDevice -- ^ device
-              ->
-       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDeviceMemory -- ^ pMemory
-                                                         -> IO VkResult
-
-type PFN_vkAllocateMemory = FunPtr HS_vkAllocateMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkAllocateMemory ::
-               PFN_vkAllocateMemory -> HS_vkAllocateMemory
-
-foreign import ccall safe "dynamic" unwrapVkAllocateMemorySafe ::
-               PFN_vkAllocateMemory -> HS_vkAllocateMemory
-
-instance VulkanProc "vkAllocateMemory" where
-        type VkProcType "vkAllocateMemory" = HS_vkAllocateMemory
-        vkProcSymbol = _VkAllocateMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAllocateMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkAllocateMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFreeMemory :: CString
-
-pattern VkFreeMemory <- (is_VkFreeMemory -> True)
-  where VkFreeMemory = _VkFreeMemory
-
-{-# INLINE _VkFreeMemory #-}
-
-_VkFreeMemory :: CString
-_VkFreeMemory = Ptr "vkFreeMemory\NUL"##
-
-{-# INLINE is_VkFreeMemory #-}
-
-is_VkFreeMemory :: CString -> Bool
-is_VkFreeMemory = (EQ ==) . cmpCStrings _VkFreeMemory
-
-type VkFreeMemory = "vkFreeMemory"
-
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFreeMemory" vkFreeMemory ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkFreeMemory ::
-             VkDevice -- ^ device
-                      -> VkDeviceMemory -- ^ memory
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-vkFreeMemory = unsafeDupablePerformIO (vkGetProc @VkFreeMemory)
-
-{-# NOINLINE vkFreeMemory #-}
-##endif
-
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkFreeMemorySafe ::
-                 VkDevice -- ^ device
-                          -> VkDeviceMemory -- ^ memory
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-vkFreeMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeMemory)
-
-{-# NOINLINE vkFreeMemorySafe #-}
-##endif
-
--- | > void vkFreeMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
-type HS_vkFreeMemory =
-     VkDevice -- ^ device
-              -> VkDeviceMemory -- ^ memory
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkFreeMemory = FunPtr HS_vkFreeMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkFreeMemory ::
-               PFN_vkFreeMemory -> HS_vkFreeMemory
-
-foreign import ccall safe "dynamic" unwrapVkFreeMemorySafe ::
-               PFN_vkFreeMemory -> HS_vkFreeMemory
-
-instance VulkanProc "vkFreeMemory" where
-        type VkProcType "vkFreeMemory" = HS_vkFreeMemory
-        vkProcSymbol = _VkFreeMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFreeMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkFreeMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkMapMemory :: CString
-
-pattern VkMapMemory <- (is_VkMapMemory -> True)
-  where VkMapMemory = _VkMapMemory
-
-{-# INLINE _VkMapMemory #-}
-
-_VkMapMemory :: CString
-_VkMapMemory = Ptr "vkMapMemory\NUL"##
-
-{-# INLINE is_VkMapMemory #-}
-
-is_VkMapMemory :: CString -> Bool
-is_VkMapMemory = (EQ ==) . cmpCStrings _VkMapMemory
-
-type VkMapMemory = "vkMapMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkMapMemory" vkMapMemory ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
-##else
-vkMapMemory ::
-            VkDevice -- ^ device
-                     ->
-              VkDeviceMemory -- ^ memory
-                             ->
-                VkDeviceSize -- ^ offset
-                             ->
-                  VkDeviceSize -- ^ size
-                               -> VkMemoryMapFlags -- ^ flags
-                                                   -> Ptr (Ptr Void) -- ^ ppData
-                                                                     -> IO VkResult
-vkMapMemory = unsafeDupablePerformIO (vkGetProc @VkMapMemory)
-
-{-# NOINLINE vkMapMemory #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
-##else
-vkMapMemorySafe ::
-                VkDevice -- ^ device
-                         ->
-                  VkDeviceMemory -- ^ memory
-                                 ->
-                    VkDeviceSize -- ^ offset
-                                 ->
-                      VkDeviceSize -- ^ size
-                                   -> VkMemoryMapFlags -- ^ flags
-                                                       -> Ptr (Ptr Void) -- ^ ppData
-                                                                         -> IO VkResult
-vkMapMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkMapMemory)
-
-{-# NOINLINE vkMapMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
---   > VkResult vkMapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize offset
---   >     , VkDeviceSize size
---   >     , VkMemoryMapFlags flags
---   >     , void** ppData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
-type HS_vkMapMemory =
-     VkDevice -- ^ device
-              ->
-       VkDeviceMemory -- ^ memory
-                      ->
-         VkDeviceSize -- ^ offset
-                      ->
-           VkDeviceSize -- ^ size
-                        -> VkMemoryMapFlags -- ^ flags
-                                            -> Ptr (Ptr Void) -- ^ ppData
-                                                              -> IO VkResult
-
-type PFN_vkMapMemory = FunPtr HS_vkMapMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkMapMemory ::
-               PFN_vkMapMemory -> HS_vkMapMemory
-
-foreign import ccall safe "dynamic" unwrapVkMapMemorySafe ::
-               PFN_vkMapMemory -> HS_vkMapMemory
-
-instance VulkanProc "vkMapMemory" where
-        type VkProcType "vkMapMemory" = HS_vkMapMemory
-        vkProcSymbol = _VkMapMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkMapMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkMapMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkUnmapMemory :: CString
-
-pattern VkUnmapMemory <- (is_VkUnmapMemory -> True)
-  where VkUnmapMemory = _VkUnmapMemory
-
-{-# INLINE _VkUnmapMemory #-}
-
-_VkUnmapMemory :: CString
-_VkUnmapMemory = Ptr "vkUnmapMemory\NUL"##
-
-{-# INLINE is_VkUnmapMemory #-}
-
-is_VkUnmapMemory :: CString -> Bool
-is_VkUnmapMemory = (EQ ==) . cmpCStrings _VkUnmapMemory
-
-type VkUnmapMemory = "vkUnmapMemory"
-
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemory ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
-##else
-vkUnmapMemory :: VkDevice -- ^ device
-                          -> VkDeviceMemory -- ^ memory
-                                            -> IO ()
-vkUnmapMemory = unsafeDupablePerformIO (vkGetProc @VkUnmapMemory)
-
-{-# NOINLINE vkUnmapMemory #-}
-##endif
-
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
-##else
-vkUnmapMemorySafe :: VkDevice -- ^ device
-                              -> VkDeviceMemory -- ^ memory
-                                                -> IO ()
-vkUnmapMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkUnmapMemory)
-
-{-# NOINLINE vkUnmapMemorySafe #-}
-##endif
-
--- | > void vkUnmapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
-type HS_vkUnmapMemory = VkDevice -- ^ device
-                                 -> VkDeviceMemory -- ^ memory
-                                                   -> IO ()
-
-type PFN_vkUnmapMemory = FunPtr HS_vkUnmapMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkUnmapMemory ::
-               PFN_vkUnmapMemory -> HS_vkUnmapMemory
-
-foreign import ccall safe "dynamic" unwrapVkUnmapMemorySafe ::
-               PFN_vkUnmapMemory -> HS_vkUnmapMemory
-
-instance VulkanProc "vkUnmapMemory" where
-        type VkProcType "vkUnmapMemory" = HS_vkUnmapMemory
-        vkProcSymbol = _VkUnmapMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUnmapMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkUnmapMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFlushMappedMemoryRanges :: CString
-
-pattern VkFlushMappedMemoryRanges <-
-        (is_VkFlushMappedMemoryRanges -> True)
-  where VkFlushMappedMemoryRanges = _VkFlushMappedMemoryRanges
-
-{-# INLINE _VkFlushMappedMemoryRanges #-}
-
-_VkFlushMappedMemoryRanges :: CString
-_VkFlushMappedMemoryRanges = Ptr "vkFlushMappedMemoryRanges\NUL"##
-
-{-# INLINE is_VkFlushMappedMemoryRanges #-}
-
-is_VkFlushMappedMemoryRanges :: CString -> Bool
-is_VkFlushMappedMemoryRanges
-  = (EQ ==) . cmpCStrings _VkFlushMappedMemoryRanges
-
-type VkFlushMappedMemoryRanges = "vkFlushMappedMemoryRanges"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRanges ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkFlushMappedMemoryRanges ::
-                          VkDevice -- ^ device
-                                   -> Word32 -- ^ memoryRangeCount
-                                             -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                        -> IO VkResult
-vkFlushMappedMemoryRanges
-  = unsafeDupablePerformIO (vkGetProc @VkFlushMappedMemoryRanges)
-
-{-# NOINLINE vkFlushMappedMemoryRanges #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRangesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkFlushMappedMemoryRangesSafe ::
-                              VkDevice -- ^ device
-                                       -> Word32 -- ^ memoryRangeCount
-                                                 -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                            -> IO VkResult
-vkFlushMappedMemoryRangesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFlushMappedMemoryRanges)
-
-{-# NOINLINE vkFlushMappedMemoryRangesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkFlushMappedMemoryRanges
---   >     ( VkDevice device
---   >     , uint32_t memoryRangeCount
---   >     , const VkMappedMemoryRange* pMemoryRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
-type HS_vkFlushMappedMemoryRanges =
-     VkDevice -- ^ device
-              -> Word32 -- ^ memoryRangeCount
-                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                   -> IO VkResult
-
-type PFN_vkFlushMappedMemoryRanges =
-     FunPtr HS_vkFlushMappedMemoryRanges
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkFlushMappedMemoryRanges ::
-               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
-
-foreign import ccall safe "dynamic"
-               unwrapVkFlushMappedMemoryRangesSafe ::
-               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
-
-instance VulkanProc "vkFlushMappedMemoryRanges" where
-        type VkProcType "vkFlushMappedMemoryRanges" =
-             HS_vkFlushMappedMemoryRanges
-        vkProcSymbol = _VkFlushMappedMemoryRanges
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFlushMappedMemoryRanges
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkFlushMappedMemoryRangesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkInvalidateMappedMemoryRanges :: CString
-
-pattern VkInvalidateMappedMemoryRanges <-
-        (is_VkInvalidateMappedMemoryRanges -> True)
-  where VkInvalidateMappedMemoryRanges
-          = _VkInvalidateMappedMemoryRanges
-
-{-# INLINE _VkInvalidateMappedMemoryRanges #-}
-
-_VkInvalidateMappedMemoryRanges :: CString
-_VkInvalidateMappedMemoryRanges
-  = Ptr "vkInvalidateMappedMemoryRanges\NUL"##
-
-{-# INLINE is_VkInvalidateMappedMemoryRanges #-}
-
-is_VkInvalidateMappedMemoryRanges :: CString -> Bool
-is_VkInvalidateMappedMemoryRanges
-  = (EQ ==) . cmpCStrings _VkInvalidateMappedMemoryRanges
-
-type VkInvalidateMappedMemoryRanges =
-     "vkInvalidateMappedMemoryRanges"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRanges ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkInvalidateMappedMemoryRanges ::
-                               VkDevice -- ^ device
-                                        -> Word32 -- ^ memoryRangeCount
-                                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                             -> IO VkResult
-vkInvalidateMappedMemoryRanges
-  = unsafeDupablePerformIO
-      (vkGetProc @VkInvalidateMappedMemoryRanges)
-
-{-# NOINLINE vkInvalidateMappedMemoryRanges #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRangesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkInvalidateMappedMemoryRangesSafe ::
-                                   VkDevice -- ^ device
-                                            -> Word32 -- ^ memoryRangeCount
-                                                      -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                                 -> IO VkResult
-vkInvalidateMappedMemoryRangesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkInvalidateMappedMemoryRanges)
-
-{-# NOINLINE vkInvalidateMappedMemoryRangesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkInvalidateMappedMemoryRanges
---   >     ( VkDevice device
---   >     , uint32_t memoryRangeCount
---   >     , const VkMappedMemoryRange* pMemoryRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
-type HS_vkInvalidateMappedMemoryRanges =
-     VkDevice -- ^ device
-              -> Word32 -- ^ memoryRangeCount
-                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                   -> IO VkResult
-
-type PFN_vkInvalidateMappedMemoryRanges =
-     FunPtr HS_vkInvalidateMappedMemoryRanges
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkInvalidateMappedMemoryRanges ::
-               PFN_vkInvalidateMappedMemoryRanges ->
-                 HS_vkInvalidateMappedMemoryRanges
-
-foreign import ccall safe "dynamic"
-               unwrapVkInvalidateMappedMemoryRangesSafe ::
-               PFN_vkInvalidateMappedMemoryRanges ->
-                 HS_vkInvalidateMappedMemoryRanges
-
-instance VulkanProc "vkInvalidateMappedMemoryRanges" where
-        type VkProcType "vkInvalidateMappedMemoryRanges" =
-             HS_vkInvalidateMappedMemoryRanges
-        vkProcSymbol = _VkInvalidateMappedMemoryRanges
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkInvalidateMappedMemoryRanges
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkInvalidateMappedMemoryRangesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetDeviceMemoryCommitment :: CString
-
-pattern VkGetDeviceMemoryCommitment <-
-        (is_VkGetDeviceMemoryCommitment -> True)
-  where VkGetDeviceMemoryCommitment = _VkGetDeviceMemoryCommitment
-
-{-# INLINE _VkGetDeviceMemoryCommitment #-}
-
-_VkGetDeviceMemoryCommitment :: CString
-_VkGetDeviceMemoryCommitment
-  = Ptr "vkGetDeviceMemoryCommitment\NUL"##
-
-{-# INLINE is_VkGetDeviceMemoryCommitment #-}
-
-is_VkGetDeviceMemoryCommitment :: CString -> Bool
-is_VkGetDeviceMemoryCommitment
-  = (EQ ==) . cmpCStrings _VkGetDeviceMemoryCommitment
-
-type VkGetDeviceMemoryCommitment = "vkGetDeviceMemoryCommitment"
-
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitment ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
-##else
-vkGetDeviceMemoryCommitment ::
-                            VkDevice -- ^ device
-                                     -> VkDeviceMemory -- ^ memory
-                                                       -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                           -> IO ()
-vkGetDeviceMemoryCommitment
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceMemoryCommitment)
-
-{-# NOINLINE vkGetDeviceMemoryCommitment #-}
-##endif
-
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitmentSafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
-##else
-vkGetDeviceMemoryCommitmentSafe ::
-                                VkDevice -- ^ device
-                                         -> VkDeviceMemory -- ^ memory
-                                                           -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                               -> IO ()
-vkGetDeviceMemoryCommitmentSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetDeviceMemoryCommitment)
-
-{-# NOINLINE vkGetDeviceMemoryCommitmentSafe #-}
-##endif
-
--- | > void vkGetDeviceMemoryCommitment
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize* pCommittedMemoryInBytes
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
-type HS_vkGetDeviceMemoryCommitment =
-     VkDevice -- ^ device
-              -> VkDeviceMemory -- ^ memory
-                                -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                    -> IO ()
-
-type PFN_vkGetDeviceMemoryCommitment =
-     FunPtr HS_vkGetDeviceMemoryCommitment
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceMemoryCommitment ::
-               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetDeviceMemoryCommitmentSafe ::
-               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
-
-instance VulkanProc "vkGetDeviceMemoryCommitment" where
-        type VkProcType "vkGetDeviceMemoryCommitment" =
-             HS_vkGetDeviceMemoryCommitment
-        vkProcSymbol = _VkGetDeviceMemoryCommitment
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceMemoryCommitment
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceMemoryCommitmentSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBindBufferMemory :: CString
-
-pattern VkBindBufferMemory <- (is_VkBindBufferMemory -> True)
-  where VkBindBufferMemory = _VkBindBufferMemory
-
-{-# INLINE _VkBindBufferMemory #-}
-
-_VkBindBufferMemory :: CString
-_VkBindBufferMemory = Ptr "vkBindBufferMemory\NUL"##
-
-{-# INLINE is_VkBindBufferMemory #-}
-
-is_VkBindBufferMemory :: CString -> Bool
-is_VkBindBufferMemory = (EQ ==) . cmpCStrings _VkBindBufferMemory
-
-type VkBindBufferMemory = "vkBindBufferMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkBindBufferMemory" vkBindBufferMemory
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
-##else
-vkBindBufferMemory ::
-                   VkDevice -- ^ device
-                            ->
-                     VkBuffer -- ^ buffer
-                              -> VkDeviceMemory -- ^ memory
-                                                -> VkDeviceSize -- ^ memoryOffset
-                                                                -> IO VkResult
-vkBindBufferMemory
-  = unsafeDupablePerformIO (vkGetProc @VkBindBufferMemory)
-
-{-# NOINLINE vkBindBufferMemory #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkBindBufferMemory"
-               vkBindBufferMemorySafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
-##else
-vkBindBufferMemorySafe ::
-                       VkDevice -- ^ device
-                                ->
-                         VkBuffer -- ^ buffer
-                                  -> VkDeviceMemory -- ^ memory
-                                                    -> VkDeviceSize -- ^ memoryOffset
-                                                                    -> IO VkResult
-vkBindBufferMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory)
-
-{-# NOINLINE vkBindBufferMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindBufferMemory
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize memoryOffset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
-type HS_vkBindBufferMemory =
-     VkDevice -- ^ device
-              ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceMemory -- ^ memory
-                                  -> VkDeviceSize -- ^ memoryOffset
-                                                  -> IO VkResult
-
-type PFN_vkBindBufferMemory = FunPtr HS_vkBindBufferMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkBindBufferMemory ::
-               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
-
-foreign import ccall safe "dynamic" unwrapVkBindBufferMemorySafe ::
-               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
-
-instance VulkanProc "vkBindBufferMemory" where
-        type VkProcType "vkBindBufferMemory" = HS_vkBindBufferMemory
-        vkProcSymbol = _VkBindBufferMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindBufferMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkBindBufferMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBindImageMemory :: CString
-
-pattern VkBindImageMemory <- (is_VkBindImageMemory -> True)
-  where VkBindImageMemory = _VkBindImageMemory
-
-{-# INLINE _VkBindImageMemory #-}
-
-_VkBindImageMemory :: CString
-_VkBindImageMemory = Ptr "vkBindImageMemory\NUL"##
-
-{-# INLINE is_VkBindImageMemory #-}
-
-is_VkBindImageMemory :: CString -> Bool
-is_VkBindImageMemory = (EQ ==) . cmpCStrings _VkBindImageMemory
-
-type VkBindImageMemory = "vkBindImageMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkBindImageMemory" vkBindImageMemory
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
-##else
-vkBindImageMemory ::
-                  VkDevice -- ^ device
-                           ->
-                    VkImage -- ^ image
-                            -> VkDeviceMemory -- ^ memory
-                                              -> VkDeviceSize -- ^ memoryOffset
-                                                              -> IO VkResult
-vkBindImageMemory
-  = unsafeDupablePerformIO (vkGetProc @VkBindImageMemory)
-
-{-# NOINLINE vkBindImageMemory #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
-##else
-vkBindImageMemorySafe ::
-                      VkDevice -- ^ device
-                               ->
-                        VkImage -- ^ image
-                                -> VkDeviceMemory -- ^ memory
-                                                  -> VkDeviceSize -- ^ memoryOffset
-                                                                  -> IO VkResult
-vkBindImageMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory)
-
-{-# NOINLINE vkBindImageMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindImageMemory
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize memoryOffset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
-type HS_vkBindImageMemory =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               -> VkDeviceMemory -- ^ memory
-                                 -> VkDeviceSize -- ^ memoryOffset
-                                                 -> IO VkResult
-
-type PFN_vkBindImageMemory = FunPtr HS_vkBindImageMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkBindImageMemory ::
-               PFN_vkBindImageMemory -> HS_vkBindImageMemory
-
-foreign import ccall safe "dynamic" unwrapVkBindImageMemorySafe ::
-               PFN_vkBindImageMemory -> HS_vkBindImageMemory
-
-instance VulkanProc "vkBindImageMemory" where
-        type VkProcType "vkBindImageMemory" = HS_vkBindImageMemory
-        vkProcSymbol = _VkBindImageMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindImageMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkBindImageMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetBufferMemoryRequirements :: CString
-
-pattern VkGetBufferMemoryRequirements <-
-        (is_VkGetBufferMemoryRequirements -> True)
-  where VkGetBufferMemoryRequirements
-          = _VkGetBufferMemoryRequirements
-
-{-# INLINE _VkGetBufferMemoryRequirements #-}
-
-_VkGetBufferMemoryRequirements :: CString
-_VkGetBufferMemoryRequirements
-  = Ptr "vkGetBufferMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetBufferMemoryRequirements #-}
-
-is_VkGetBufferMemoryRequirements :: CString -> Bool
-is_VkGetBufferMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements
-
-type VkGetBufferMemoryRequirements =
-     "vkGetBufferMemoryRequirements"
-
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirements ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
-##else
-vkGetBufferMemoryRequirements ::
-                              VkDevice -- ^ device
-                                       -> VkBuffer -- ^ buffer
-                                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                               -> IO ()
-vkGetBufferMemoryRequirements
-  = unsafeDupablePerformIO (vkGetProc @VkGetBufferMemoryRequirements)
-
-{-# NOINLINE vkGetBufferMemoryRequirements #-}
-##endif
-
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
-##else
-vkGetBufferMemoryRequirementsSafe ::
-                                  VkDevice -- ^ device
-                                           -> VkBuffer -- ^ buffer
-                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                   -> IO ()
-vkGetBufferMemoryRequirementsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetBufferMemoryRequirements)
-
-{-# NOINLINE vkGetBufferMemoryRequirementsSafe #-}
-##endif
-
--- | > void vkGetBufferMemoryRequirements
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
-type HS_vkGetBufferMemoryRequirements =
-     VkDevice -- ^ device
-              -> VkBuffer -- ^ buffer
-                          -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                      -> IO ()
-
-type PFN_vkGetBufferMemoryRequirements =
-     FunPtr HS_vkGetBufferMemoryRequirements
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetBufferMemoryRequirements ::
-               PFN_vkGetBufferMemoryRequirements ->
-                 HS_vkGetBufferMemoryRequirements
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetBufferMemoryRequirementsSafe ::
-               PFN_vkGetBufferMemoryRequirements ->
-                 HS_vkGetBufferMemoryRequirements
-
-instance VulkanProc "vkGetBufferMemoryRequirements" where
-        type VkProcType "vkGetBufferMemoryRequirements" =
-             HS_vkGetBufferMemoryRequirements
-        vkProcSymbol = _VkGetBufferMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirementsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageMemoryRequirements :: CString
-
-pattern VkGetImageMemoryRequirements <-
-        (is_VkGetImageMemoryRequirements -> True)
-  where VkGetImageMemoryRequirements = _VkGetImageMemoryRequirements
-
-{-# INLINE _VkGetImageMemoryRequirements #-}
-
-_VkGetImageMemoryRequirements :: CString
-_VkGetImageMemoryRequirements
-  = Ptr "vkGetImageMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetImageMemoryRequirements #-}
-
-is_VkGetImageMemoryRequirements :: CString -> Bool
-is_VkGetImageMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements
-
-type VkGetImageMemoryRequirements = "vkGetImageMemoryRequirements"
-
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirements ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
-##else
-vkGetImageMemoryRequirements ::
-                             VkDevice -- ^ device
-                                      -> VkImage -- ^ image
-                                                 -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                             -> IO ()
-vkGetImageMemoryRequirements
-  = unsafeDupablePerformIO (vkGetProc @VkGetImageMemoryRequirements)
-
-{-# NOINLINE vkGetImageMemoryRequirements #-}
-##endif
-
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
-##else
-vkGetImageMemoryRequirementsSafe ::
-                                 VkDevice -- ^ device
-                                          -> VkImage -- ^ image
-                                                     -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                 -> IO ()
-vkGetImageMemoryRequirementsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageMemoryRequirements)
-
-{-# NOINLINE vkGetImageMemoryRequirementsSafe #-}
-##endif
-
--- | > void vkGetImageMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
-type HS_vkGetImageMemoryRequirements =
-     VkDevice -- ^ device
-              -> VkImage -- ^ image
-                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                     -> IO ()
-
-type PFN_vkGetImageMemoryRequirements =
-     FunPtr HS_vkGetImageMemoryRequirements
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageMemoryRequirements ::
-               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageMemoryRequirementsSafe ::
-               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
-
-instance VulkanProc "vkGetImageMemoryRequirements" where
-        type VkProcType "vkGetImageMemoryRequirements" =
-             HS_vkGetImageMemoryRequirements
-        vkProcSymbol = _VkGetImageMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirementsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageSparseMemoryRequirements :: CString
-
-pattern VkGetImageSparseMemoryRequirements <-
-        (is_VkGetImageSparseMemoryRequirements -> True)
-  where VkGetImageSparseMemoryRequirements
-          = _VkGetImageSparseMemoryRequirements
-
-{-# INLINE _VkGetImageSparseMemoryRequirements #-}
-
-_VkGetImageSparseMemoryRequirements :: CString
-_VkGetImageSparseMemoryRequirements
-  = Ptr "vkGetImageSparseMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetImageSparseMemoryRequirements #-}
-
-is_VkGetImageSparseMemoryRequirements :: CString -> Bool
-is_VkGetImageSparseMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements
-
-type VkGetImageSparseMemoryRequirements =
-     "vkGetImageSparseMemoryRequirements"
-
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirements ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
-##else
-vkGetImageSparseMemoryRequirements ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     VkImage -- ^ image
-                                             ->
-                                       Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                  -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                         -> IO ()
-vkGetImageSparseMemoryRequirements
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetImageSparseMemoryRequirements)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements #-}
-##endif
-
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
-##else
-vkGetImageSparseMemoryRequirementsSafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         VkImage -- ^ image
-                                                 ->
-                                           Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                      ->
-                                             Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                 -> IO ()
-vkGetImageSparseMemoryRequirementsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageSparseMemoryRequirements)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirementsSafe #-}
-##endif
-
--- | > void vkGetImageSparseMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
-type HS_vkGetImageSparseMemoryRequirements =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               ->
-         Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                    -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                           -> IO ()
-
-type PFN_vkGetImageSparseMemoryRequirements =
-     FunPtr HS_vkGetImageSparseMemoryRequirements
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements ::
-               PFN_vkGetImageSparseMemoryRequirements ->
-                 HS_vkGetImageSparseMemoryRequirements
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirementsSafe ::
-               PFN_vkGetImageSparseMemoryRequirements ->
-                 HS_vkGetImageSparseMemoryRequirements
-
-instance VulkanProc "vkGetImageSparseMemoryRequirements" where
-        type VkProcType "vkGetImageSparseMemoryRequirements" =
-             HS_vkGetImageSparseMemoryRequirements
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirementsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties <-
-        (is_VkGetPhysicalDeviceSparseImageFormatProperties -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties
-          = _VkGetPhysicalDeviceSparseImageFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties #-}
-
-_VkGetPhysicalDeviceSparseImageFormatProperties :: CString
-_VkGetPhysicalDeviceSparseImageFormatProperties
-  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties #-}
-
-is_VkGetPhysicalDeviceSparseImageFormatProperties ::
-                                                  CString -> Bool
-is_VkGetPhysicalDeviceSparseImageFormatProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties
-
-type VkGetPhysicalDeviceSparseImageFormatProperties =
-     "vkGetPhysicalDeviceSparseImageFormatProperties"
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceSparseImageFormatProperties ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 VkFormat -- ^ format
-                                                          ->
-                                                   VkImageType -- ^ type
-                                                               ->
-                                                     VkSampleCountFlagBits -- ^ samples
-                                                                           ->
-                                                       VkImageUsageFlags -- ^ usage
-                                                                         ->
-                                                         VkImageTiling -- ^ tiling
-                                                                       ->
-                                                           Ptr Word32 -- ^ pPropertyCount
-                                                                      ->
-                                                             Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                                               ->
-                                                               IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-                                                   VkPhysicalDevice -- ^ physicalDevice
-                                                                    ->
-                                                     VkFormat -- ^ format
-                                                              ->
-                                                       VkImageType -- ^ type
-                                                                   ->
-                                                         VkSampleCountFlagBits -- ^ samples
-                                                                               ->
-                                                           VkImageUsageFlags -- ^ usage
-                                                                             ->
-                                                             VkImageTiling -- ^ tiling
-                                                                           ->
-                                                               Ptr Word32 -- ^ pPropertyCount
-                                                                          ->
-                                                                 Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                   -> IO ()
-vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceSparseImageFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkImageType type
---   >     , VkSampleCountFlagBits samples
---   >     , VkImageUsageFlags usage
---   >     , VkImageTiling tiling
---   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceSparseImageFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       VkFormat -- ^ format
-                ->
-         VkImageType -- ^ type
-                     ->
-           VkSampleCountFlagBits -- ^ samples
-                                 ->
-             VkImageUsageFlags -- ^ usage
-                               ->
-               VkImageTiling -- ^ tiling
-                             ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                 -> IO ()
-
-type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-instance VulkanProc
-           "vkGetPhysicalDeviceSparseImageFormatProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties" =
-             HS_vkGetPhysicalDeviceSparseImageFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkQueueBindSparse :: CString
-
-pattern VkQueueBindSparse <- (is_VkQueueBindSparse -> True)
-  where VkQueueBindSparse = _VkQueueBindSparse
-
-{-# INLINE _VkQueueBindSparse #-}
-
-_VkQueueBindSparse :: CString
-_VkQueueBindSparse = Ptr "vkQueueBindSparse\NUL"##
-
-{-# INLINE is_VkQueueBindSparse #-}
-
-is_VkQueueBindSparse :: CString -> Bool
-is_VkQueueBindSparse = (EQ ==) . cmpCStrings _VkQueueBindSparse
-
-type VkQueueBindSparse = "vkQueueBindSparse"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueueBindSparse" vkQueueBindSparse
-               ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
-##else
-vkQueueBindSparse ::
-                  VkQueue -- ^ queue
-                          -> Word32 -- ^ bindInfoCount
-                                    -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                            -> VkFence -- ^ fence
-                                                                       -> IO VkResult
-vkQueueBindSparse
-  = unsafeDupablePerformIO (vkGetProc @VkQueueBindSparse)
-
-{-# NOINLINE vkQueueBindSparse #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
-               ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
-##else
-vkQueueBindSparseSafe ::
-                      VkQueue -- ^ queue
-                              -> Word32 -- ^ bindInfoCount
-                                        -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                                -> VkFence -- ^ fence
-                                                                           -> IO VkResult
-vkQueueBindSparseSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueBindSparse)
-
-{-# NOINLINE vkQueueBindSparseSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   Queues: 'sparse_binding'.
---
---   > VkResult vkQueueBindSparse
---   >     ( VkQueue queue
---   >     , uint32_t bindInfoCount
---   >     , const VkBindSparseInfo* pBindInfo
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
-type HS_vkQueueBindSparse =
-     VkQueue -- ^ queue
-             -> Word32 -- ^ bindInfoCount
-                       -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                               -> VkFence -- ^ fence
-                                                          -> IO VkResult
-
-type PFN_vkQueueBindSparse = FunPtr HS_vkQueueBindSparse
-
-foreign import ccall unsafe "dynamic" unwrapVkQueueBindSparse ::
-               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
-
-foreign import ccall safe "dynamic" unwrapVkQueueBindSparseSafe ::
-               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
-
-instance VulkanProc "vkQueueBindSparse" where
-        type VkProcType "vkQueueBindSparse" = HS_vkQueueBindSparse
-        vkProcSymbol = _VkQueueBindSparse
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueBindSparse
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueBindSparseSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateFence :: CString
-
-pattern VkCreateFence <- (is_VkCreateFence -> True)
-  where VkCreateFence = _VkCreateFence
-
-{-# INLINE _VkCreateFence #-}
-
-_VkCreateFence :: CString
-_VkCreateFence = Ptr "vkCreateFence\NUL"##
-
-{-# INLINE is_VkCreateFence #-}
-
-is_VkCreateFence :: CString -> Bool
-is_VkCreateFence = (EQ ==) . cmpCStrings _VkCreateFence
-
-type VkCreateFence = "vkCreateFence"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateFence" vkCreateFence ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
-##else
-vkCreateFence ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkFence -- ^ pFence
-                                                           -> IO VkResult
-vkCreateFence = unsafeDupablePerformIO (vkGetProc @VkCreateFence)
-
-{-# NOINLINE vkCreateFence #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
-##else
-vkCreateFenceSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkFence -- ^ pFence
-                                                               -> IO VkResult
-vkCreateFenceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFence)
-
-{-# NOINLINE vkCreateFenceSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateFence
---   >     ( VkDevice device
---   >     , const VkFenceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkFence* pFence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
-type HS_vkCreateFence =
-     VkDevice -- ^ device
-              ->
-       Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkFence -- ^ pFence
-                                                  -> IO VkResult
-
-type PFN_vkCreateFence = FunPtr HS_vkCreateFence
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateFence ::
-               PFN_vkCreateFence -> HS_vkCreateFence
-
-foreign import ccall safe "dynamic" unwrapVkCreateFenceSafe ::
-               PFN_vkCreateFence -> HS_vkCreateFence
-
-instance VulkanProc "vkCreateFence" where
-        type VkProcType "vkCreateFence" = HS_vkCreateFence
-        vkProcSymbol = _VkCreateFence
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateFence
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateFenceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyFence :: CString
-
-pattern VkDestroyFence <- (is_VkDestroyFence -> True)
-  where VkDestroyFence = _VkDestroyFence
-
-{-# INLINE _VkDestroyFence #-}
-
-_VkDestroyFence :: CString
-_VkDestroyFence = Ptr "vkDestroyFence\NUL"##
-
-{-# INLINE is_VkDestroyFence #-}
-
-is_VkDestroyFence :: CString -> Bool
-is_VkDestroyFence = (EQ ==) . cmpCStrings _VkDestroyFence
-
-type VkDestroyFence = "vkDestroyFence"
-
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyFence" vkDestroyFence ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyFence ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyFence = unsafeDupablePerformIO (vkGetProc @VkDestroyFence)
-
-{-# NOINLINE vkDestroyFence #-}
-##endif
-
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyFenceSafe ::
-                   VkDevice -- ^ device
-                            -> VkFence -- ^ fence
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyFenceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFence)
-
-{-# NOINLINE vkDestroyFenceSafe #-}
-##endif
-
--- | > void vkDestroyFence
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
-type HS_vkDestroyFence =
-     VkDevice -- ^ device
-              -> VkFence -- ^ fence
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyFence = FunPtr HS_vkDestroyFence
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyFence ::
-               PFN_vkDestroyFence -> HS_vkDestroyFence
-
-foreign import ccall safe "dynamic" unwrapVkDestroyFenceSafe ::
-               PFN_vkDestroyFence -> HS_vkDestroyFence
-
-instance VulkanProc "vkDestroyFence" where
-        type VkProcType "vkDestroyFence" = HS_vkDestroyFence
-        vkProcSymbol = _VkDestroyFence
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyFence
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyFenceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetFences :: CString
-
-pattern VkResetFences <- (is_VkResetFences -> True)
-  where VkResetFences = _VkResetFences
-
-{-# INLINE _VkResetFences #-}
-
-_VkResetFences :: CString
-_VkResetFences = Ptr "vkResetFences\NUL"##
-
-{-# INLINE is_VkResetFences #-}
-
-is_VkResetFences :: CString -> Bool
-is_VkResetFences = (EQ ==) . cmpCStrings _VkResetFences
-
-type VkResetFences = "vkResetFences"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetFences" vkResetFences ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
-##else
-vkResetFences :: VkDevice -- ^ device
-                          -> Word32 -- ^ fenceCount
-                                    -> Ptr VkFence -- ^ pFences
-                                                   -> IO VkResult
-vkResetFences = unsafeDupablePerformIO (vkGetProc @VkResetFences)
-
-{-# NOINLINE vkResetFences #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
-##else
-vkResetFencesSafe ::
-                  VkDevice -- ^ device
-                           -> Word32 -- ^ fenceCount
-                                     -> Ptr VkFence -- ^ pFences
-                                                    -> IO VkResult
-vkResetFencesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetFences)
-
-{-# NOINLINE vkResetFencesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetFences
---   >     ( VkDevice device
---   >     , uint32_t fenceCount
---   >     , const VkFence* pFences
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
-type HS_vkResetFences =
-     VkDevice -- ^ device
-              -> Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> IO VkResult
-
-type PFN_vkResetFences = FunPtr HS_vkResetFences
-
-foreign import ccall unsafe "dynamic" unwrapVkResetFences ::
-               PFN_vkResetFences -> HS_vkResetFences
-
-foreign import ccall safe "dynamic" unwrapVkResetFencesSafe ::
-               PFN_vkResetFences -> HS_vkResetFences
-
-instance VulkanProc "vkResetFences" where
-        type VkProcType "vkResetFences" = HS_vkResetFences
-        vkProcSymbol = _VkResetFences
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetFences
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkResetFencesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetFenceStatus :: CString
-
-pattern VkGetFenceStatus <- (is_VkGetFenceStatus -> True)
-  where VkGetFenceStatus = _VkGetFenceStatus
-
-{-# INLINE _VkGetFenceStatus #-}
-
-_VkGetFenceStatus :: CString
-_VkGetFenceStatus = Ptr "vkGetFenceStatus\NUL"##
-
-{-# INLINE is_VkGetFenceStatus #-}
-
-is_VkGetFenceStatus :: CString -> Bool
-is_VkGetFenceStatus = (EQ ==) . cmpCStrings _VkGetFenceStatus
-
-type VkGetFenceStatus = "vkGetFenceStatus"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetFenceStatus" vkGetFenceStatus ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> IO VkResult
-
-##else
-vkGetFenceStatus :: VkDevice -- ^ device
-                             -> VkFence -- ^ fence
-                                        -> IO VkResult
-vkGetFenceStatus
-  = unsafeDupablePerformIO (vkGetProc @VkGetFenceStatus)
-
-{-# NOINLINE vkGetFenceStatus #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
-               :: VkDevice -- ^ device
-                           -> VkFence -- ^ fence
-                                      -> IO VkResult
-
-##else
-vkGetFenceStatusSafe :: VkDevice -- ^ device
-                                 -> VkFence -- ^ fence
-                                            -> IO VkResult
-vkGetFenceStatusSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetFenceStatus)
-
-{-# NOINLINE vkGetFenceStatusSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetFenceStatus
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
-type HS_vkGetFenceStatus = VkDevice -- ^ device
-                                    -> VkFence -- ^ fence
-                                               -> IO VkResult
-
-type PFN_vkGetFenceStatus = FunPtr HS_vkGetFenceStatus
-
-foreign import ccall unsafe "dynamic" unwrapVkGetFenceStatus ::
-               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
-
-foreign import ccall safe "dynamic" unwrapVkGetFenceStatusSafe ::
-               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
-
-instance VulkanProc "vkGetFenceStatus" where
-        type VkProcType "vkGetFenceStatus" = HS_vkGetFenceStatus
-        vkProcSymbol = _VkGetFenceStatus
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetFenceStatus
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetFenceStatusSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkWaitForFences :: CString
-
-pattern VkWaitForFences <- (is_VkWaitForFences -> True)
-  where VkWaitForFences = _VkWaitForFences
-
-{-# INLINE _VkWaitForFences #-}
-
-_VkWaitForFences :: CString
-_VkWaitForFences = Ptr "vkWaitForFences\NUL"##
-
-{-# INLINE is_VkWaitForFences #-}
-
-is_VkWaitForFences :: CString -> Bool
-is_VkWaitForFences = (EQ ==) . cmpCStrings _VkWaitForFences
-
-type VkWaitForFences = "vkWaitForFences"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkWaitForFences" vkWaitForFences ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
-##else
-vkWaitForFences ::
-                VkDevice -- ^ device
-                         ->
-                  Word32 -- ^ fenceCount
-                         -> Ptr VkFence -- ^ pFences
-                                        -> VkBool32 -- ^ waitAll
-                                                    -> Word64 -- ^ timeout
-                                                              -> IO VkResult
-vkWaitForFences
-  = unsafeDupablePerformIO (vkGetProc @VkWaitForFences)
-
-{-# NOINLINE vkWaitForFences #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
-##else
-vkWaitForFencesSafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Word32 -- ^ fenceCount
-                             -> Ptr VkFence -- ^ pFences
-                                            -> VkBool32 -- ^ waitAll
-                                                        -> Word64 -- ^ timeout
-                                                                  -> IO VkResult
-vkWaitForFencesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkWaitForFences)
-
-{-# NOINLINE vkWaitForFencesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkWaitForFences
---   >     ( VkDevice device
---   >     , uint32_t fenceCount
---   >     , const VkFence* pFences
---   >     , VkBool32 waitAll
---   >     , uint64_t timeout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
-type HS_vkWaitForFences =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ fenceCount
-              -> Ptr VkFence -- ^ pFences
-                             -> VkBool32 -- ^ waitAll
-                                         -> Word64 -- ^ timeout
-                                                   -> IO VkResult
-
-type PFN_vkWaitForFences = FunPtr HS_vkWaitForFences
-
-foreign import ccall unsafe "dynamic" unwrapVkWaitForFences ::
-               PFN_vkWaitForFences -> HS_vkWaitForFences
-
-foreign import ccall safe "dynamic" unwrapVkWaitForFencesSafe ::
-               PFN_vkWaitForFences -> HS_vkWaitForFences
-
-instance VulkanProc "vkWaitForFences" where
-        type VkProcType "vkWaitForFences" = HS_vkWaitForFences
-        vkProcSymbol = _VkWaitForFences
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkWaitForFences
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkWaitForFencesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateSemaphore :: CString
-
-pattern VkCreateSemaphore <- (is_VkCreateSemaphore -> True)
-  where VkCreateSemaphore = _VkCreateSemaphore
-
-{-# INLINE _VkCreateSemaphore #-}
-
-_VkCreateSemaphore :: CString
-_VkCreateSemaphore = Ptr "vkCreateSemaphore\NUL"##
-
-{-# INLINE is_VkCreateSemaphore #-}
-
-is_VkCreateSemaphore :: CString -> Bool
-is_VkCreateSemaphore = (EQ ==) . cmpCStrings _VkCreateSemaphore
-
-type VkCreateSemaphore = "vkCreateSemaphore"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateSemaphore" vkCreateSemaphore
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
-##else
-vkCreateSemaphore ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                   -> IO VkResult
-vkCreateSemaphore
-  = unsafeDupablePerformIO (vkGetProc @VkCreateSemaphore)
-
-{-# NOINLINE vkCreateSemaphore #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
-##else
-vkCreateSemaphoreSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                       -> IO VkResult
-vkCreateSemaphoreSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSemaphore)
-
-{-# NOINLINE vkCreateSemaphoreSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateSemaphore
---   >     ( VkDevice device
---   >     , const VkSemaphoreCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSemaphore* pSemaphore
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
-type HS_vkCreateSemaphore =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkSemaphore -- ^ pSemaphore
-                                                      -> IO VkResult
-
-type PFN_vkCreateSemaphore = FunPtr HS_vkCreateSemaphore
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateSemaphore ::
-               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
-
-foreign import ccall safe "dynamic" unwrapVkCreateSemaphoreSafe ::
-               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
-
-instance VulkanProc "vkCreateSemaphore" where
-        type VkProcType "vkCreateSemaphore" = HS_vkCreateSemaphore
-        vkProcSymbol = _VkCreateSemaphore
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSemaphore
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSemaphoreSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroySemaphore :: CString
-
-pattern VkDestroySemaphore <- (is_VkDestroySemaphore -> True)
-  where VkDestroySemaphore = _VkDestroySemaphore
-
-{-# INLINE _VkDestroySemaphore #-}
-
-_VkDestroySemaphore :: CString
-_VkDestroySemaphore = Ptr "vkDestroySemaphore\NUL"##
-
-{-# INLINE is_VkDestroySemaphore #-}
-
-is_VkDestroySemaphore :: CString -> Bool
-is_VkDestroySemaphore = (EQ ==) . cmpCStrings _VkDestroySemaphore
-
-type VkDestroySemaphore = "vkDestroySemaphore"
-
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroySemaphore" vkDestroySemaphore
-               :: VkDevice -- ^ device
-                           -> VkSemaphore -- ^ semaphore
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroySemaphore ::
-                   VkDevice -- ^ device
-                            -> VkSemaphore -- ^ semaphore
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroySemaphore
-  = unsafeDupablePerformIO (vkGetProc @VkDestroySemaphore)
-
-{-# NOINLINE vkDestroySemaphore #-}
-##endif
-
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroySemaphore"
-               vkDestroySemaphoreSafe ::
-               VkDevice -- ^ device
-                        -> VkSemaphore -- ^ semaphore
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroySemaphoreSafe ::
-                       VkDevice -- ^ device
-                                -> VkSemaphore -- ^ semaphore
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroySemaphoreSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySemaphore)
-
-{-# NOINLINE vkDestroySemaphoreSafe #-}
-##endif
-
--- | > void vkDestroySemaphore
---   >     ( VkDevice device
---   >     , VkSemaphore semaphore
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
-type HS_vkDestroySemaphore =
-     VkDevice -- ^ device
-              -> VkSemaphore -- ^ semaphore
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroySemaphore = FunPtr HS_vkDestroySemaphore
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroySemaphore ::
-               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
-
-foreign import ccall safe "dynamic" unwrapVkDestroySemaphoreSafe ::
-               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
-
-instance VulkanProc "vkDestroySemaphore" where
-        type VkProcType "vkDestroySemaphore" = HS_vkDestroySemaphore
-        vkProcSymbol = _VkDestroySemaphore
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySemaphore
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySemaphoreSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateEvent :: CString
-
-pattern VkCreateEvent <- (is_VkCreateEvent -> True)
-  where VkCreateEvent = _VkCreateEvent
-
-{-# INLINE _VkCreateEvent #-}
-
-_VkCreateEvent :: CString
-_VkCreateEvent = Ptr "vkCreateEvent\NUL"##
-
-{-# INLINE is_VkCreateEvent #-}
-
-is_VkCreateEvent :: CString -> Bool
-is_VkCreateEvent = (EQ ==) . cmpCStrings _VkCreateEvent
-
-type VkCreateEvent = "vkCreateEvent"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateEvent" vkCreateEvent ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
-##else
-vkCreateEvent ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkEvent -- ^ pEvent
-                                                           -> IO VkResult
-vkCreateEvent = unsafeDupablePerformIO (vkGetProc @VkCreateEvent)
-
-{-# NOINLINE vkCreateEvent #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
-##else
-vkCreateEventSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkEvent -- ^ pEvent
-                                                               -> IO VkResult
-vkCreateEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateEvent)
-
-{-# NOINLINE vkCreateEventSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateEvent
---   >     ( VkDevice device
---   >     , const VkEventCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkEvent* pEvent
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
-type HS_vkCreateEvent =
-     VkDevice -- ^ device
-              ->
-       Ptr VkEventCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkEvent -- ^ pEvent
-                                                  -> IO VkResult
-
-type PFN_vkCreateEvent = FunPtr HS_vkCreateEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateEvent ::
-               PFN_vkCreateEvent -> HS_vkCreateEvent
-
-foreign import ccall safe "dynamic" unwrapVkCreateEventSafe ::
-               PFN_vkCreateEvent -> HS_vkCreateEvent
-
-instance VulkanProc "vkCreateEvent" where
-        type VkProcType "vkCreateEvent" = HS_vkCreateEvent
-        vkProcSymbol = _VkCreateEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyEvent :: CString
-
-pattern VkDestroyEvent <- (is_VkDestroyEvent -> True)
-  where VkDestroyEvent = _VkDestroyEvent
-
-{-# INLINE _VkDestroyEvent #-}
-
-_VkDestroyEvent :: CString
-_VkDestroyEvent = Ptr "vkDestroyEvent\NUL"##
-
-{-# INLINE is_VkDestroyEvent #-}
-
-is_VkDestroyEvent :: CString -> Bool
-is_VkDestroyEvent = (EQ ==) . cmpCStrings _VkDestroyEvent
-
-type VkDestroyEvent = "vkDestroyEvent"
-
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyEvent" vkDestroyEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyEvent = unsafeDupablePerformIO (vkGetProc @VkDestroyEvent)
-
-{-# NOINLINE vkDestroyEvent #-}
-##endif
-
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyEventSafe ::
-                   VkDevice -- ^ device
-                            -> VkEvent -- ^ event
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyEvent)
-
-{-# NOINLINE vkDestroyEventSafe #-}
-##endif
-
--- | > void vkDestroyEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
-type HS_vkDestroyEvent =
-     VkDevice -- ^ device
-              -> VkEvent -- ^ event
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyEvent = FunPtr HS_vkDestroyEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyEvent ::
-               PFN_vkDestroyEvent -> HS_vkDestroyEvent
-
-foreign import ccall safe "dynamic" unwrapVkDestroyEventSafe ::
-               PFN_vkDestroyEvent -> HS_vkDestroyEvent
-
-instance VulkanProc "vkDestroyEvent" where
-        type VkProcType "vkDestroyEvent" = HS_vkDestroyEvent
-        vkProcSymbol = _VkDestroyEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetEventStatus :: CString
-
-pattern VkGetEventStatus <- (is_VkGetEventStatus -> True)
-  where VkGetEventStatus = _VkGetEventStatus
-
-{-# INLINE _VkGetEventStatus #-}
-
-_VkGetEventStatus :: CString
-_VkGetEventStatus = Ptr "vkGetEventStatus\NUL"##
-
-{-# INLINE is_VkGetEventStatus #-}
-
-is_VkGetEventStatus :: CString -> Bool
-is_VkGetEventStatus = (EQ ==) . cmpCStrings _VkGetEventStatus
-
-type VkGetEventStatus = "vkGetEventStatus"
-
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetEventStatus" vkGetEventStatus ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkGetEventStatus :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-vkGetEventStatus
-  = unsafeDupablePerformIO (vkGetProc @VkGetEventStatus)
-
-{-# NOINLINE vkGetEventStatus #-}
-##endif
-
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
-               :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> IO VkResult
-
-##else
-vkGetEventStatusSafe :: VkDevice -- ^ device
-                                 -> VkEvent -- ^ event
-                                            -> IO VkResult
-vkGetEventStatusSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetEventStatus)
-
-{-# NOINLINE vkGetEventStatusSafe #-}
-##endif
-
--- | Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetEventStatus
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
-type HS_vkGetEventStatus = VkDevice -- ^ device
-                                    -> VkEvent -- ^ event
-                                               -> IO VkResult
-
-type PFN_vkGetEventStatus = FunPtr HS_vkGetEventStatus
-
-foreign import ccall unsafe "dynamic" unwrapVkGetEventStatus ::
-               PFN_vkGetEventStatus -> HS_vkGetEventStatus
-
-foreign import ccall safe "dynamic" unwrapVkGetEventStatusSafe ::
-               PFN_vkGetEventStatus -> HS_vkGetEventStatus
-
-instance VulkanProc "vkGetEventStatus" where
-        type VkProcType "vkGetEventStatus" = HS_vkGetEventStatus
-        vkProcSymbol = _VkGetEventStatus
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetEventStatus
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetEventStatusSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkSetEvent :: CString
-
-pattern VkSetEvent <- (is_VkSetEvent -> True)
-  where VkSetEvent = _VkSetEvent
-
-{-# INLINE _VkSetEvent #-}
-
-_VkSetEvent :: CString
-_VkSetEvent = Ptr "vkSetEvent\NUL"##
-
-{-# INLINE is_VkSetEvent #-}
-
-is_VkSetEvent :: CString -> Bool
-is_VkSetEvent = (EQ ==) . cmpCStrings _VkSetEvent
-
-type VkSetEvent = "vkSetEvent"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkSetEvent" vkSetEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkSetEvent :: VkDevice -- ^ device
-                       -> VkEvent -- ^ event
-                                  -> IO VkResult
-vkSetEvent = unsafeDupablePerformIO (vkGetProc @VkSetEvent)
-
-{-# NOINLINE vkSetEvent #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkSetEventSafe :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> IO VkResult
-vkSetEventSafe = unsafeDupablePerformIO (vkGetProcSafe @VkSetEvent)
-
-{-# NOINLINE vkSetEventSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkSetEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
-type HS_vkSetEvent = VkDevice -- ^ device
-                              -> VkEvent -- ^ event
-                                         -> IO VkResult
-
-type PFN_vkSetEvent = FunPtr HS_vkSetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkSetEvent ::
-               PFN_vkSetEvent -> HS_vkSetEvent
-
-foreign import ccall safe "dynamic" unwrapVkSetEventSafe ::
-               PFN_vkSetEvent -> HS_vkSetEvent
-
-instance VulkanProc "vkSetEvent" where
-        type VkProcType "vkSetEvent" = HS_vkSetEvent
-        vkProcSymbol = _VkSetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkSetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkSetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetEvent :: CString
-
-pattern VkResetEvent <- (is_VkResetEvent -> True)
-  where VkResetEvent = _VkResetEvent
-
-{-# INLINE _VkResetEvent #-}
-
-_VkResetEvent :: CString
-_VkResetEvent = Ptr "vkResetEvent\NUL"##
-
-{-# INLINE is_VkResetEvent #-}
-
-is_VkResetEvent :: CString -> Bool
-is_VkResetEvent = (EQ ==) . cmpCStrings _VkResetEvent
-
-type VkResetEvent = "vkResetEvent"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetEvent" vkResetEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkResetEvent :: VkDevice -- ^ device
-                         -> VkEvent -- ^ event
-                                    -> IO VkResult
-vkResetEvent = unsafeDupablePerformIO (vkGetProc @VkResetEvent)
-
-{-# NOINLINE vkResetEvent #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkResetEventSafe :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-vkResetEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetEvent)
-
-{-# NOINLINE vkResetEventSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
-type HS_vkResetEvent = VkDevice -- ^ device
-                                -> VkEvent -- ^ event
-                                           -> IO VkResult
-
-type PFN_vkResetEvent = FunPtr HS_vkResetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkResetEvent ::
-               PFN_vkResetEvent -> HS_vkResetEvent
-
-foreign import ccall safe "dynamic" unwrapVkResetEventSafe ::
-               PFN_vkResetEvent -> HS_vkResetEvent
-
-instance VulkanProc "vkResetEvent" where
-        type VkProcType "vkResetEvent" = HS_vkResetEvent
-        vkProcSymbol = _VkResetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkResetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateQueryPool :: CString
-
-pattern VkCreateQueryPool <- (is_VkCreateQueryPool -> True)
-  where VkCreateQueryPool = _VkCreateQueryPool
-
-{-# INLINE _VkCreateQueryPool #-}
-
-_VkCreateQueryPool :: CString
-_VkCreateQueryPool = Ptr "vkCreateQueryPool\NUL"##
-
-{-# INLINE is_VkCreateQueryPool #-}
-
-is_VkCreateQueryPool :: CString -> Bool
-is_VkCreateQueryPool = (EQ ==) . cmpCStrings _VkCreateQueryPool
-
-type VkCreateQueryPool = "vkCreateQueryPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateQueryPool" vkCreateQueryPool
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
-##else
-vkCreateQueryPool ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                   -> IO VkResult
-vkCreateQueryPool
-  = unsafeDupablePerformIO (vkGetProc @VkCreateQueryPool)
-
-{-# NOINLINE vkCreateQueryPool #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
-##else
-vkCreateQueryPoolSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                       -> IO VkResult
-vkCreateQueryPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateQueryPool)
-
-{-# NOINLINE vkCreateQueryPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateQueryPool
---   >     ( VkDevice device
---   >     , const VkQueryPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkQueryPool* pQueryPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
-type HS_vkCreateQueryPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkQueryPool -- ^ pQueryPool
-                                                      -> IO VkResult
-
-type PFN_vkCreateQueryPool = FunPtr HS_vkCreateQueryPool
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateQueryPool ::
-               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
-
-foreign import ccall safe "dynamic" unwrapVkCreateQueryPoolSafe ::
-               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
-
-instance VulkanProc "vkCreateQueryPool" where
-        type VkProcType "vkCreateQueryPool" = HS_vkCreateQueryPool
-        vkProcSymbol = _VkCreateQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateQueryPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateQueryPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyQueryPool :: CString
-
-pattern VkDestroyQueryPool <- (is_VkDestroyQueryPool -> True)
-  where VkDestroyQueryPool = _VkDestroyQueryPool
-
-{-# INLINE _VkDestroyQueryPool #-}
-
-_VkDestroyQueryPool :: CString
-_VkDestroyQueryPool = Ptr "vkDestroyQueryPool\NUL"##
-
-{-# INLINE is_VkDestroyQueryPool #-}
-
-is_VkDestroyQueryPool :: CString -> Bool
-is_VkDestroyQueryPool = (EQ ==) . cmpCStrings _VkDestroyQueryPool
-
-type VkDestroyQueryPool = "vkDestroyQueryPool"
-
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyQueryPool" vkDestroyQueryPool
-               :: VkDevice -- ^ device
-                           -> VkQueryPool -- ^ queryPool
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroyQueryPool ::
-                   VkDevice -- ^ device
-                            -> VkQueryPool -- ^ queryPool
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroyQueryPool
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyQueryPool)
-
-{-# NOINLINE vkDestroyQueryPool #-}
-##endif
-
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyQueryPool"
-               vkDestroyQueryPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkQueryPool -- ^ queryPool
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyQueryPoolSafe ::
-                       VkDevice -- ^ device
-                                -> VkQueryPool -- ^ queryPool
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyQueryPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyQueryPool)
-
-{-# NOINLINE vkDestroyQueryPoolSafe #-}
-##endif
-
--- | > void vkDestroyQueryPool
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
-type HS_vkDestroyQueryPool =
-     VkDevice -- ^ device
-              -> VkQueryPool -- ^ queryPool
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyQueryPool = FunPtr HS_vkDestroyQueryPool
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyQueryPool ::
-               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
-
-foreign import ccall safe "dynamic" unwrapVkDestroyQueryPoolSafe ::
-               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
-
-instance VulkanProc "vkDestroyQueryPool" where
-        type VkProcType "vkDestroyQueryPool" = HS_vkDestroyQueryPool
-        vkProcSymbol = _VkDestroyQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyQueryPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyQueryPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetQueryPoolResults :: CString
-
-pattern VkGetQueryPoolResults <- (is_VkGetQueryPoolResults -> True)
-  where VkGetQueryPoolResults = _VkGetQueryPoolResults
-
-{-# INLINE _VkGetQueryPoolResults #-}
-
-_VkGetQueryPoolResults :: CString
-_VkGetQueryPoolResults = Ptr "vkGetQueryPoolResults\NUL"##
-
-{-# INLINE is_VkGetQueryPoolResults #-}
-
-is_VkGetQueryPoolResults :: CString -> Bool
-is_VkGetQueryPoolResults
-  = (EQ ==) . cmpCStrings _VkGetQueryPoolResults
-
-type VkGetQueryPoolResults = "vkGetQueryPoolResults"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetQueryPoolResults"
-               vkGetQueryPoolResults ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
-##else
-vkGetQueryPoolResults ::
-                      VkDevice -- ^ device
-                               ->
-                        VkQueryPool -- ^ queryPool
-                                    ->
-                          Word32 -- ^ firstQuery
-                                 ->
-                            Word32 -- ^ queryCount
-                                   ->
-                              CSize -- ^ dataSize
-                                    ->
-                                Ptr Void -- ^ pData
-                                         -> VkDeviceSize -- ^ stride
-                                                         -> VkQueryResultFlags -- ^ flags
-                                                                               -> IO VkResult
-vkGetQueryPoolResults
-  = unsafeDupablePerformIO (vkGetProc @VkGetQueryPoolResults)
-
-{-# NOINLINE vkGetQueryPoolResults #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetQueryPoolResults"
-               vkGetQueryPoolResultsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
-##else
-vkGetQueryPoolResultsSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkQueryPool -- ^ queryPool
-                                        ->
-                              Word32 -- ^ firstQuery
-                                     ->
-                                Word32 -- ^ queryCount
-                                       ->
-                                  CSize -- ^ dataSize
-                                        ->
-                                    Ptr Void -- ^ pData
-                                             -> VkDeviceSize -- ^ stride
-                                                             -> VkQueryResultFlags -- ^ flags
-                                                                                   -> IO VkResult
-vkGetQueryPoolResultsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetQueryPoolResults)
-
-{-# NOINLINE vkGetQueryPoolResultsSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetQueryPoolResults
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     , size_t dataSize
---   >     , void* pData
---   >     , VkDeviceSize stride
---   >     , VkQueryResultFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
-type HS_vkGetQueryPoolResults =
-     VkDevice -- ^ device
-              ->
-       VkQueryPool -- ^ queryPool
-                   ->
-         Word32 -- ^ firstQuery
-                ->
-           Word32 -- ^ queryCount
-                  ->
-             CSize -- ^ dataSize
-                   ->
-               Ptr Void -- ^ pData
-                        -> VkDeviceSize -- ^ stride
-                                        -> VkQueryResultFlags -- ^ flags
-                                                              -> IO VkResult
-
-type PFN_vkGetQueryPoolResults = FunPtr HS_vkGetQueryPoolResults
-
-foreign import ccall unsafe "dynamic" unwrapVkGetQueryPoolResults
-               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
-
-foreign import ccall safe "dynamic" unwrapVkGetQueryPoolResultsSafe
-               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
-
-instance VulkanProc "vkGetQueryPoolResults" where
-        type VkProcType "vkGetQueryPoolResults" = HS_vkGetQueryPoolResults
-        vkProcSymbol = _VkGetQueryPoolResults
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetQueryPoolResults
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetQueryPoolResultsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateBuffer :: CString
-
-pattern VkCreateBuffer <- (is_VkCreateBuffer -> True)
-  where VkCreateBuffer = _VkCreateBuffer
-
-{-# INLINE _VkCreateBuffer #-}
-
-_VkCreateBuffer :: CString
-_VkCreateBuffer = Ptr "vkCreateBuffer\NUL"##
-
-{-# INLINE is_VkCreateBuffer #-}
-
-is_VkCreateBuffer :: CString -> Bool
-is_VkCreateBuffer = (EQ ==) . cmpCStrings _VkCreateBuffer
-
-type VkCreateBuffer = "vkCreateBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateBuffer" vkCreateBuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
-##else
-vkCreateBuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-vkCreateBuffer = unsafeDupablePerformIO (vkGetProc @VkCreateBuffer)
-
-{-# NOINLINE vkCreateBuffer #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
-##else
-vkCreateBufferSafe ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                            ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkBuffer -- ^ pBuffer
-                                                                 -> IO VkResult
-vkCreateBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBuffer)
-
-{-# NOINLINE vkCreateBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateBuffer
---   >     ( VkDevice device
---   >     , const VkBufferCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkBuffer* pBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
-type HS_vkCreateBuffer =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkBuffer -- ^ pBuffer
-                                                   -> IO VkResult
-
-type PFN_vkCreateBuffer = FunPtr HS_vkCreateBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateBuffer ::
-               PFN_vkCreateBuffer -> HS_vkCreateBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCreateBufferSafe ::
-               PFN_vkCreateBuffer -> HS_vkCreateBuffer
-
-instance VulkanProc "vkCreateBuffer" where
-        type VkProcType "vkCreateBuffer" = HS_vkCreateBuffer
-        vkProcSymbol = _VkCreateBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyBuffer :: CString
-
-pattern VkDestroyBuffer <- (is_VkDestroyBuffer -> True)
-  where VkDestroyBuffer = _VkDestroyBuffer
-
-{-# INLINE _VkDestroyBuffer #-}
-
-_VkDestroyBuffer :: CString
-_VkDestroyBuffer = Ptr "vkDestroyBuffer\NUL"##
-
-{-# INLINE is_VkDestroyBuffer #-}
-
-is_VkDestroyBuffer :: CString -> Bool
-is_VkDestroyBuffer = (EQ ==) . cmpCStrings _VkDestroyBuffer
-
-type VkDestroyBuffer = "vkDestroyBuffer"
-
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBuffer ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> IO ()
-
-##else
-vkDestroyBuffer ::
-                VkDevice -- ^ device
-                         -> VkBuffer -- ^ buffer
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-vkDestroyBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyBuffer)
-
-{-# NOINLINE vkDestroyBuffer #-}
-##endif
-
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> IO ()
-
-##else
-vkDestroyBufferSafe ::
-                    VkDevice -- ^ device
-                             -> VkBuffer -- ^ buffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBuffer)
-
-{-# NOINLINE vkDestroyBufferSafe #-}
-##endif
-
--- | > void vkDestroyBuffer
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
-type HS_vkDestroyBuffer =
-     VkDevice -- ^ device
-              -> VkBuffer -- ^ buffer
-                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> IO ()
-
-type PFN_vkDestroyBuffer = FunPtr HS_vkDestroyBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyBuffer ::
-               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
-
-foreign import ccall safe "dynamic" unwrapVkDestroyBufferSafe ::
-               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
-
-instance VulkanProc "vkDestroyBuffer" where
-        type VkProcType "vkDestroyBuffer" = HS_vkDestroyBuffer
-        vkProcSymbol = _VkDestroyBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateBufferView :: CString
-
-pattern VkCreateBufferView <- (is_VkCreateBufferView -> True)
-  where VkCreateBufferView = _VkCreateBufferView
-
-{-# INLINE _VkCreateBufferView #-}
-
-_VkCreateBufferView :: CString
-_VkCreateBufferView = Ptr "vkCreateBufferView\NUL"##
-
-{-# INLINE is_VkCreateBufferView #-}
-
-is_VkCreateBufferView :: CString -> Bool
-is_VkCreateBufferView = (EQ ==) . cmpCStrings _VkCreateBufferView
-
-type VkCreateBufferView = "vkCreateBufferView"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateBufferView" vkCreateBufferView
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
-##else
-vkCreateBufferView ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkBufferView -- ^ pView
-                                                                     -> IO VkResult
-vkCreateBufferView
-  = unsafeDupablePerformIO (vkGetProc @VkCreateBufferView)
-
-{-# NOINLINE vkCreateBufferView #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateBufferView"
-               vkCreateBufferViewSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
-##else
-vkCreateBufferViewSafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                    ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkBufferView -- ^ pView
-                                                                         -> IO VkResult
-vkCreateBufferViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBufferView)
-
-{-# NOINLINE vkCreateBufferViewSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateBufferView
---   >     ( VkDevice device
---   >     , const VkBufferViewCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkBufferView* pView
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
-type HS_vkCreateBufferView =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                  ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkBufferView -- ^ pView
-                                                       -> IO VkResult
-
-type PFN_vkCreateBufferView = FunPtr HS_vkCreateBufferView
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateBufferView ::
-               PFN_vkCreateBufferView -> HS_vkCreateBufferView
-
-foreign import ccall safe "dynamic" unwrapVkCreateBufferViewSafe ::
-               PFN_vkCreateBufferView -> HS_vkCreateBufferView
-
-instance VulkanProc "vkCreateBufferView" where
-        type VkProcType "vkCreateBufferView" = HS_vkCreateBufferView
-        vkProcSymbol = _VkCreateBufferView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateBufferView
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateBufferViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyBufferView :: CString
-
-pattern VkDestroyBufferView <- (is_VkDestroyBufferView -> True)
-  where VkDestroyBufferView = _VkDestroyBufferView
-
-{-# INLINE _VkDestroyBufferView #-}
-
-_VkDestroyBufferView :: CString
-_VkDestroyBufferView = Ptr "vkDestroyBufferView\NUL"##
-
-{-# INLINE is_VkDestroyBufferView #-}
-
-is_VkDestroyBufferView :: CString -> Bool
-is_VkDestroyBufferView = (EQ ==) . cmpCStrings _VkDestroyBufferView
-
-type VkDestroyBufferView = "vkDestroyBufferView"
-
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyBufferView"
-               vkDestroyBufferView ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyBufferView ::
-                    VkDevice -- ^ device
-                             -> VkBufferView -- ^ bufferView
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyBufferView
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyBufferView)
-
-{-# NOINLINE vkDestroyBufferView #-}
-##endif
-
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyBufferView"
-               vkDestroyBufferViewSafe ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyBufferViewSafe ::
-                        VkDevice -- ^ device
-                                 -> VkBufferView -- ^ bufferView
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyBufferViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBufferView)
-
-{-# NOINLINE vkDestroyBufferViewSafe #-}
-##endif
-
--- | > void vkDestroyBufferView
---   >     ( VkDevice device
---   >     , VkBufferView bufferView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
-type HS_vkDestroyBufferView =
-     VkDevice -- ^ device
-              -> VkBufferView -- ^ bufferView
-                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> IO ()
-
-type PFN_vkDestroyBufferView = FunPtr HS_vkDestroyBufferView
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyBufferView ::
-               PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
-
-foreign import ccall safe "dynamic" unwrapVkDestroyBufferViewSafe
-               :: PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
-
-instance VulkanProc "vkDestroyBufferView" where
-        type VkProcType "vkDestroyBufferView" = HS_vkDestroyBufferView
-        vkProcSymbol = _VkDestroyBufferView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyBufferView
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyBufferViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateImage :: CString
-
-pattern VkCreateImage <- (is_VkCreateImage -> True)
-  where VkCreateImage = _VkCreateImage
-
-{-# INLINE _VkCreateImage #-}
-
-_VkCreateImage :: CString
-_VkCreateImage = Ptr "vkCreateImage\NUL"##
-
-{-# INLINE is_VkCreateImage #-}
-
-is_VkCreateImage :: CString -> Bool
-is_VkCreateImage = (EQ ==) . cmpCStrings _VkCreateImage
-
-type VkCreateImage = "vkCreateImage"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateImage" vkCreateImage ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
-##else
-vkCreateImage ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkImage -- ^ pImage
-                                                           -> IO VkResult
-vkCreateImage = unsafeDupablePerformIO (vkGetProc @VkCreateImage)
-
-{-# NOINLINE vkCreateImage #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
-##else
-vkCreateImageSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkImage -- ^ pImage
-                                                               -> IO VkResult
-vkCreateImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImage)
-
-{-# NOINLINE vkCreateImageSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateImage
---   >     ( VkDevice device
---   >     , const VkImageCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkImage* pImage
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
-type HS_vkCreateImage =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkImage -- ^ pImage
-                                                  -> IO VkResult
-
-type PFN_vkCreateImage = FunPtr HS_vkCreateImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateImage ::
-               PFN_vkCreateImage -> HS_vkCreateImage
-
-foreign import ccall safe "dynamic" unwrapVkCreateImageSafe ::
-               PFN_vkCreateImage -> HS_vkCreateImage
-
-instance VulkanProc "vkCreateImage" where
-        type VkProcType "vkCreateImage" = HS_vkCreateImage
-        vkProcSymbol = _VkCreateImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyImage :: CString
-
-pattern VkDestroyImage <- (is_VkDestroyImage -> True)
-  where VkDestroyImage = _VkDestroyImage
-
-{-# INLINE _VkDestroyImage #-}
-
-_VkDestroyImage :: CString
-_VkDestroyImage = Ptr "vkDestroyImage\NUL"##
-
-{-# INLINE is_VkDestroyImage #-}
-
-is_VkDestroyImage :: CString -> Bool
-is_VkDestroyImage = (EQ ==) . cmpCStrings _VkDestroyImage
-
-type VkDestroyImage = "vkDestroyImage"
-
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyImage" vkDestroyImage ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyImage ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyImage = unsafeDupablePerformIO (vkGetProc @VkDestroyImage)
-
-{-# NOINLINE vkDestroyImage #-}
-##endif
-
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyImageSafe ::
-                   VkDevice -- ^ device
-                            -> VkImage -- ^ image
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImage)
-
-{-# NOINLINE vkDestroyImageSafe #-}
-##endif
-
--- | > void vkDestroyImage
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
-type HS_vkDestroyImage =
-     VkDevice -- ^ device
-              -> VkImage -- ^ image
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyImage = FunPtr HS_vkDestroyImage
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyImage ::
-               PFN_vkDestroyImage -> HS_vkDestroyImage
-
-foreign import ccall safe "dynamic" unwrapVkDestroyImageSafe ::
-               PFN_vkDestroyImage -> HS_vkDestroyImage
-
-instance VulkanProc "vkDestroyImage" where
-        type VkProcType "vkDestroyImage" = HS_vkDestroyImage
-        vkProcSymbol = _VkDestroyImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageSubresourceLayout :: CString
-
-pattern VkGetImageSubresourceLayout <-
-        (is_VkGetImageSubresourceLayout -> True)
-  where VkGetImageSubresourceLayout = _VkGetImageSubresourceLayout
-
-{-# INLINE _VkGetImageSubresourceLayout #-}
-
-_VkGetImageSubresourceLayout :: CString
-_VkGetImageSubresourceLayout
-  = Ptr "vkGetImageSubresourceLayout\NUL"##
-
-{-# INLINE is_VkGetImageSubresourceLayout #-}
-
-is_VkGetImageSubresourceLayout :: CString -> Bool
-is_VkGetImageSubresourceLayout
-  = (EQ ==) . cmpCStrings _VkGetImageSubresourceLayout
-
-type VkGetImageSubresourceLayout = "vkGetImageSubresourceLayout"
-
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayout ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
-##else
-vkGetImageSubresourceLayout ::
-                            VkDevice -- ^ device
-                                     ->
-                              VkImage -- ^ image
-                                      ->
-                                Ptr VkImageSubresource -- ^ pSubresource
-                                                       -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                  -> IO ()
-vkGetImageSubresourceLayout
-  = unsafeDupablePerformIO (vkGetProc @VkGetImageSubresourceLayout)
-
-{-# NOINLINE vkGetImageSubresourceLayout #-}
-##endif
-
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
-##else
-vkGetImageSubresourceLayoutSafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkImage -- ^ image
-                                          ->
-                                    Ptr VkImageSubresource -- ^ pSubresource
-                                                           -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                      -> IO ()
-vkGetImageSubresourceLayoutSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageSubresourceLayout)
-
-{-# NOINLINE vkGetImageSubresourceLayoutSafe #-}
-##endif
-
--- | > void vkGetImageSubresourceLayout
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkImageSubresource* pSubresource
---   >     , VkSubresourceLayout* pLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
-type HS_vkGetImageSubresourceLayout =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               ->
-         Ptr VkImageSubresource -- ^ pSubresource
-                                -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                           -> IO ()
-
-type PFN_vkGetImageSubresourceLayout =
-     FunPtr HS_vkGetImageSubresourceLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSubresourceLayout ::
-               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageSubresourceLayoutSafe ::
-               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
-
-instance VulkanProc "vkGetImageSubresourceLayout" where
-        type VkProcType "vkGetImageSubresourceLayout" =
-             HS_vkGetImageSubresourceLayout
-        vkProcSymbol = _VkGetImageSubresourceLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSubresourceLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageSubresourceLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateImageView :: CString
-
-pattern VkCreateImageView <- (is_VkCreateImageView -> True)
-  where VkCreateImageView = _VkCreateImageView
-
-{-# INLINE _VkCreateImageView #-}
-
-_VkCreateImageView :: CString
-_VkCreateImageView = Ptr "vkCreateImageView\NUL"##
-
-{-# INLINE is_VkCreateImageView #-}
-
-is_VkCreateImageView :: CString -> Bool
-is_VkCreateImageView = (EQ ==) . cmpCStrings _VkCreateImageView
-
-type VkCreateImageView = "vkCreateImageView"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateImageView" vkCreateImageView
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
-##else
-vkCreateImageView ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkImageView -- ^ pView
-                                                                   -> IO VkResult
-vkCreateImageView
-  = unsafeDupablePerformIO (vkGetProc @VkCreateImageView)
-
-{-# NOINLINE vkCreateImageView #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
-##else
-vkCreateImageViewSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkImageView -- ^ pView
-                                                                       -> IO VkResult
-vkCreateImageViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImageView)
-
-{-# NOINLINE vkCreateImageViewSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateImageView
---   >     ( VkDevice device
---   >     , const VkImageViewCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkImageView* pView
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
-type HS_vkCreateImageView =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkImageView -- ^ pView
-                                                      -> IO VkResult
-
-type PFN_vkCreateImageView = FunPtr HS_vkCreateImageView
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateImageView ::
-               PFN_vkCreateImageView -> HS_vkCreateImageView
-
-foreign import ccall safe "dynamic" unwrapVkCreateImageViewSafe ::
-               PFN_vkCreateImageView -> HS_vkCreateImageView
-
-instance VulkanProc "vkCreateImageView" where
-        type VkProcType "vkCreateImageView" = HS_vkCreateImageView
-        vkProcSymbol = _VkCreateImageView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateImageView
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateImageViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyImageView :: CString
-
-pattern VkDestroyImageView <- (is_VkDestroyImageView -> True)
-  where VkDestroyImageView = _VkDestroyImageView
-
-{-# INLINE _VkDestroyImageView #-}
-
-_VkDestroyImageView :: CString
-_VkDestroyImageView = Ptr "vkDestroyImageView\NUL"##
-
-{-# INLINE is_VkDestroyImageView #-}
-
-is_VkDestroyImageView :: CString -> Bool
-is_VkDestroyImageView = (EQ ==) . cmpCStrings _VkDestroyImageView
-
-type VkDestroyImageView = "vkDestroyImageView"
-
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyImageView" vkDestroyImageView
-               :: VkDevice -- ^ device
-                           -> VkImageView -- ^ imageView
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroyImageView ::
-                   VkDevice -- ^ device
-                            -> VkImageView -- ^ imageView
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroyImageView
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyImageView)
-
-{-# NOINLINE vkDestroyImageView #-}
-##endif
-
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyImageView"
-               vkDestroyImageViewSafe ::
-               VkDevice -- ^ device
-                        -> VkImageView -- ^ imageView
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyImageViewSafe ::
-                       VkDevice -- ^ device
-                                -> VkImageView -- ^ imageView
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyImageViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImageView)
-
-{-# NOINLINE vkDestroyImageViewSafe #-}
-##endif
-
--- | > void vkDestroyImageView
---   >     ( VkDevice device
---   >     , VkImageView imageView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
-type HS_vkDestroyImageView =
-     VkDevice -- ^ device
-              -> VkImageView -- ^ imageView
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyImageView = FunPtr HS_vkDestroyImageView
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyImageView ::
-               PFN_vkDestroyImageView -> HS_vkDestroyImageView
-
-foreign import ccall safe "dynamic" unwrapVkDestroyImageViewSafe ::
-               PFN_vkDestroyImageView -> HS_vkDestroyImageView
-
-instance VulkanProc "vkDestroyImageView" where
-        type VkProcType "vkDestroyImageView" = HS_vkDestroyImageView
-        vkProcSymbol = _VkDestroyImageView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyImageView
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyImageViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateShaderModule :: CString
-
-pattern VkCreateShaderModule <- (is_VkCreateShaderModule -> True)
-  where VkCreateShaderModule = _VkCreateShaderModule
-
-{-# INLINE _VkCreateShaderModule #-}
-
-_VkCreateShaderModule :: CString
-_VkCreateShaderModule = Ptr "vkCreateShaderModule\NUL"##
-
-{-# INLINE is_VkCreateShaderModule #-}
-
-is_VkCreateShaderModule :: CString -> Bool
-is_VkCreateShaderModule
-  = (EQ ==) . cmpCStrings _VkCreateShaderModule
-
-type VkCreateShaderModule = "vkCreateShaderModule"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateShaderModule"
-               vkCreateShaderModule ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
-##else
-vkCreateShaderModule ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                    ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                         -> IO VkResult
-vkCreateShaderModule
-  = unsafeDupablePerformIO (vkGetProc @VkCreateShaderModule)
-
-{-# NOINLINE vkCreateShaderModule #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateShaderModule"
-               vkCreateShaderModuleSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
-##else
-vkCreateShaderModuleSafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                        ->
-                             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                             -> IO VkResult
-vkCreateShaderModuleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateShaderModule)
-
-{-# NOINLINE vkCreateShaderModuleSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateShaderModule
---   >     ( VkDevice device
---   >     , const VkShaderModuleCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkShaderModule* pShaderModule
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
-type HS_vkCreateShaderModule =
-     VkDevice -- ^ device
-              ->
-       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                    ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkShaderModule -- ^ pShaderModule
-                                                         -> IO VkResult
-
-type PFN_vkCreateShaderModule = FunPtr HS_vkCreateShaderModule
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateShaderModule ::
-               PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
-
-foreign import ccall safe "dynamic" unwrapVkCreateShaderModuleSafe
-               :: PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
-
-instance VulkanProc "vkCreateShaderModule" where
-        type VkProcType "vkCreateShaderModule" = HS_vkCreateShaderModule
-        vkProcSymbol = _VkCreateShaderModule
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateShaderModule
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateShaderModuleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyShaderModule :: CString
-
-pattern VkDestroyShaderModule <- (is_VkDestroyShaderModule -> True)
-  where VkDestroyShaderModule = _VkDestroyShaderModule
-
-{-# INLINE _VkDestroyShaderModule #-}
-
-_VkDestroyShaderModule :: CString
-_VkDestroyShaderModule = Ptr "vkDestroyShaderModule\NUL"##
-
-{-# INLINE is_VkDestroyShaderModule #-}
-
-is_VkDestroyShaderModule :: CString -> Bool
-is_VkDestroyShaderModule
-  = (EQ ==) . cmpCStrings _VkDestroyShaderModule
-
-type VkDestroyShaderModule = "vkDestroyShaderModule"
-
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyShaderModule"
-               vkDestroyShaderModule ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroyShaderModule ::
-                      VkDevice -- ^ device
-                               -> VkShaderModule -- ^ shaderModule
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyShaderModule
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyShaderModule)
-
-{-# NOINLINE vkDestroyShaderModule #-}
-##endif
-
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyShaderModule"
-               vkDestroyShaderModuleSafe ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroyShaderModuleSafe ::
-                          VkDevice -- ^ device
-                                   -> VkShaderModule -- ^ shaderModule
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyShaderModuleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyShaderModule)
-
-{-# NOINLINE vkDestroyShaderModuleSafe #-}
-##endif
-
--- | > void vkDestroyShaderModule
---   >     ( VkDevice device
---   >     , VkShaderModule shaderModule
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
-type HS_vkDestroyShaderModule =
-     VkDevice -- ^ device
-              -> VkShaderModule -- ^ shaderModule
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkDestroyShaderModule = FunPtr HS_vkDestroyShaderModule
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyShaderModule
-               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
-
-foreign import ccall safe "dynamic" unwrapVkDestroyShaderModuleSafe
-               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
-
-instance VulkanProc "vkDestroyShaderModule" where
-        type VkProcType "vkDestroyShaderModule" = HS_vkDestroyShaderModule
-        vkProcSymbol = _VkDestroyShaderModule
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyShaderModule
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyShaderModuleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreatePipelineCache :: CString
-
-pattern VkCreatePipelineCache <- (is_VkCreatePipelineCache -> True)
-  where VkCreatePipelineCache = _VkCreatePipelineCache
-
-{-# INLINE _VkCreatePipelineCache #-}
-
-_VkCreatePipelineCache :: CString
-_VkCreatePipelineCache = Ptr "vkCreatePipelineCache\NUL"##
-
-{-# INLINE is_VkCreatePipelineCache #-}
-
-is_VkCreatePipelineCache :: CString -> Bool
-is_VkCreatePipelineCache
-  = (EQ ==) . cmpCStrings _VkCreatePipelineCache
-
-type VkCreatePipelineCache = "vkCreatePipelineCache"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreatePipelineCache"
-               vkCreatePipelineCache ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
-##else
-vkCreatePipelineCache ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                      ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                           -> IO VkResult
-vkCreatePipelineCache
-  = unsafeDupablePerformIO (vkGetProc @VkCreatePipelineCache)
-
-{-# NOINLINE vkCreatePipelineCache #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreatePipelineCache"
-               vkCreatePipelineCacheSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
-##else
-vkCreatePipelineCacheSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                          ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                               -> IO VkResult
-vkCreatePipelineCacheSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineCache)
-
-{-# NOINLINE vkCreatePipelineCacheSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreatePipelineCache
---   >     ( VkDevice device
---   >     , const VkPipelineCacheCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipelineCache* pPipelineCache
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
-type HS_vkCreatePipelineCache =
-     VkDevice -- ^ device
-              ->
-       Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                     ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                          -> IO VkResult
-
-type PFN_vkCreatePipelineCache = FunPtr HS_vkCreatePipelineCache
-
-foreign import ccall unsafe "dynamic" unwrapVkCreatePipelineCache
-               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
-
-foreign import ccall safe "dynamic" unwrapVkCreatePipelineCacheSafe
-               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
-
-instance VulkanProc "vkCreatePipelineCache" where
-        type VkProcType "vkCreatePipelineCache" = HS_vkCreatePipelineCache
-        vkProcSymbol = _VkCreatePipelineCache
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreatePipelineCache
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreatePipelineCacheSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyPipelineCache :: CString
-
-pattern VkDestroyPipelineCache <-
-        (is_VkDestroyPipelineCache -> True)
-  where VkDestroyPipelineCache = _VkDestroyPipelineCache
-
-{-# INLINE _VkDestroyPipelineCache #-}
-
-_VkDestroyPipelineCache :: CString
-_VkDestroyPipelineCache = Ptr "vkDestroyPipelineCache\NUL"##
-
-{-# INLINE is_VkDestroyPipelineCache #-}
-
-is_VkDestroyPipelineCache :: CString -> Bool
-is_VkDestroyPipelineCache
-  = (EQ ==) . cmpCStrings _VkDestroyPipelineCache
-
-type VkDestroyPipelineCache = "vkDestroyPipelineCache"
-
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyPipelineCache"
-               vkDestroyPipelineCache ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
-##else
-vkDestroyPipelineCache ::
-                       VkDevice -- ^ device
-                                -> VkPipelineCache -- ^ pipelineCache
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyPipelineCache
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipelineCache)
-
-{-# NOINLINE vkDestroyPipelineCache #-}
-##endif
-
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyPipelineCache"
-               vkDestroyPipelineCacheSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
-##else
-vkDestroyPipelineCacheSafe ::
-                           VkDevice -- ^ device
-                                    -> VkPipelineCache -- ^ pipelineCache
-                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                    -> IO ()
-vkDestroyPipelineCacheSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineCache)
-
-{-# NOINLINE vkDestroyPipelineCacheSafe #-}
-##endif
-
--- | > void vkDestroyPipelineCache
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
-type HS_vkDestroyPipelineCache =
-     VkDevice -- ^ device
-              -> VkPipelineCache -- ^ pipelineCache
-                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              -> IO ()
-
-type PFN_vkDestroyPipelineCache = FunPtr HS_vkDestroyPipelineCache
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineCache
-               :: PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyPipelineCacheSafe ::
-               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
-
-instance VulkanProc "vkDestroyPipelineCache" where
-        type VkProcType "vkDestroyPipelineCache" =
-             HS_vkDestroyPipelineCache
-        vkProcSymbol = _VkDestroyPipelineCache
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyPipelineCache
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineCacheSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPipelineCacheData :: CString
-
-pattern VkGetPipelineCacheData <-
-        (is_VkGetPipelineCacheData -> True)
-  where VkGetPipelineCacheData = _VkGetPipelineCacheData
-
-{-# INLINE _VkGetPipelineCacheData #-}
-
-_VkGetPipelineCacheData :: CString
-_VkGetPipelineCacheData = Ptr "vkGetPipelineCacheData\NUL"##
-
-{-# INLINE is_VkGetPipelineCacheData #-}
-
-is_VkGetPipelineCacheData :: CString -> Bool
-is_VkGetPipelineCacheData
-  = (EQ ==) . cmpCStrings _VkGetPipelineCacheData
-
-type VkGetPipelineCacheData = "vkGetPipelineCacheData"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPipelineCacheData"
-               vkGetPipelineCacheData ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
-##else
-vkGetPipelineCacheData ::
-                       VkDevice -- ^ device
-                                -> VkPipelineCache -- ^ pipelineCache
-                                                   -> Ptr CSize -- ^ pDataSize
-                                                                -> Ptr Void -- ^ pData
-                                                                            -> IO VkResult
-vkGetPipelineCacheData
-  = unsafeDupablePerformIO (vkGetProc @VkGetPipelineCacheData)
-
-{-# NOINLINE vkGetPipelineCacheData #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPipelineCacheData"
-               vkGetPipelineCacheDataSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
-##else
-vkGetPipelineCacheDataSafe ::
-                           VkDevice -- ^ device
-                                    -> VkPipelineCache -- ^ pipelineCache
-                                                       -> Ptr CSize -- ^ pDataSize
-                                                                    -> Ptr Void -- ^ pData
-                                                                                -> IO VkResult
-vkGetPipelineCacheDataSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetPipelineCacheData)
-
-{-# NOINLINE vkGetPipelineCacheDataSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkGetPipelineCacheData
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , size_t* pDataSize
---   >     , void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
-type HS_vkGetPipelineCacheData =
-     VkDevice -- ^ device
-              -> VkPipelineCache -- ^ pipelineCache
-                                 -> Ptr CSize -- ^ pDataSize
-                                              -> Ptr Void -- ^ pData
-                                                          -> IO VkResult
-
-type PFN_vkGetPipelineCacheData = FunPtr HS_vkGetPipelineCacheData
-
-foreign import ccall unsafe "dynamic" unwrapVkGetPipelineCacheData
-               :: PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPipelineCacheDataSafe ::
-               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
-
-instance VulkanProc "vkGetPipelineCacheData" where
-        type VkProcType "vkGetPipelineCacheData" =
-             HS_vkGetPipelineCacheData
-        vkProcSymbol = _VkGetPipelineCacheData
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPipelineCacheData
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPipelineCacheDataSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkMergePipelineCaches :: CString
-
-pattern VkMergePipelineCaches <- (is_VkMergePipelineCaches -> True)
-  where VkMergePipelineCaches = _VkMergePipelineCaches
-
-{-# INLINE _VkMergePipelineCaches #-}
-
-_VkMergePipelineCaches :: CString
-_VkMergePipelineCaches = Ptr "vkMergePipelineCaches\NUL"##
-
-{-# INLINE is_VkMergePipelineCaches #-}
-
-is_VkMergePipelineCaches :: CString -> Bool
-is_VkMergePipelineCaches
-  = (EQ ==) . cmpCStrings _VkMergePipelineCaches
-
-type VkMergePipelineCaches = "vkMergePipelineCaches"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkMergePipelineCaches"
-               vkMergePipelineCaches ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
-##else
-vkMergePipelineCaches ::
-                      VkDevice -- ^ device
-                               ->
-                        VkPipelineCache -- ^ dstCache
-                                        -> Word32 -- ^ srcCacheCount
-                                                  -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                         -> IO VkResult
-vkMergePipelineCaches
-  = unsafeDupablePerformIO (vkGetProc @VkMergePipelineCaches)
-
-{-# NOINLINE vkMergePipelineCaches #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkMergePipelineCaches"
-               vkMergePipelineCachesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
-##else
-vkMergePipelineCachesSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkPipelineCache -- ^ dstCache
-                                            -> Word32 -- ^ srcCacheCount
-                                                      -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                             -> IO VkResult
-vkMergePipelineCachesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkMergePipelineCaches)
-
-{-# NOINLINE vkMergePipelineCachesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkMergePipelineCaches
---   >     ( VkDevice device
---   >     , VkPipelineCache dstCache
---   >     , uint32_t srcCacheCount
---   >     , const VkPipelineCache* pSrcCaches
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
-type HS_vkMergePipelineCaches =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ dstCache
-                       -> Word32 -- ^ srcCacheCount
-                                 -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                        -> IO VkResult
-
-type PFN_vkMergePipelineCaches = FunPtr HS_vkMergePipelineCaches
-
-foreign import ccall unsafe "dynamic" unwrapVkMergePipelineCaches
-               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
-
-foreign import ccall safe "dynamic" unwrapVkMergePipelineCachesSafe
-               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
-
-instance VulkanProc "vkMergePipelineCaches" where
-        type VkProcType "vkMergePipelineCaches" = HS_vkMergePipelineCaches
-        vkProcSymbol = _VkMergePipelineCaches
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkMergePipelineCaches
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkMergePipelineCachesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateGraphicsPipelines :: CString
-
-pattern VkCreateGraphicsPipelines <-
-        (is_VkCreateGraphicsPipelines -> True)
-  where VkCreateGraphicsPipelines = _VkCreateGraphicsPipelines
-
-{-# INLINE _VkCreateGraphicsPipelines #-}
-
-_VkCreateGraphicsPipelines :: CString
-_VkCreateGraphicsPipelines = Ptr "vkCreateGraphicsPipelines\NUL"##
-
-{-# INLINE is_VkCreateGraphicsPipelines #-}
-
-is_VkCreateGraphicsPipelines :: CString -> Bool
-is_VkCreateGraphicsPipelines
-  = (EQ ==) . cmpCStrings _VkCreateGraphicsPipelines
-
-type VkCreateGraphicsPipelines = "vkCreateGraphicsPipelines"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelines ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateGraphicsPipelines ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkPipelineCache -- ^ pipelineCache
-                                            ->
-                              Word32 -- ^ createInfoCount
-                                     ->
-                                Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                 ->
-                                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> Ptr VkPipeline -- ^ pPipelines
-                                                                              -> IO VkResult
-vkCreateGraphicsPipelines
-  = unsafeDupablePerformIO (vkGetProc @VkCreateGraphicsPipelines)
-
-{-# NOINLINE vkCreateGraphicsPipelines #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelinesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateGraphicsPipelinesSafe ::
-                              VkDevice -- ^ device
-                                       ->
-                                VkPipelineCache -- ^ pipelineCache
-                                                ->
-                                  Word32 -- ^ createInfoCount
-                                         ->
-                                    Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                     ->
-                                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> Ptr VkPipeline -- ^ pPipelines
-                                                                                  -> IO VkResult
-vkCreateGraphicsPipelinesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateGraphicsPipelines)
-
-{-# NOINLINE vkCreateGraphicsPipelinesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateGraphicsPipelines
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , uint32_t createInfoCount
---   >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipeline* pPipelines
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
-type HS_vkCreateGraphicsPipelines =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ pipelineCache
-                       ->
-         Word32 -- ^ createInfoCount
-                ->
-           Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                            ->
-             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                       -> Ptr VkPipeline -- ^ pPipelines
-                                                         -> IO VkResult
-
-type PFN_vkCreateGraphicsPipelines =
-     FunPtr HS_vkCreateGraphicsPipelines
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateGraphicsPipelines ::
-               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateGraphicsPipelinesSafe ::
-               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
-
-instance VulkanProc "vkCreateGraphicsPipelines" where
-        type VkProcType "vkCreateGraphicsPipelines" =
-             HS_vkCreateGraphicsPipelines
-        vkProcSymbol = _VkCreateGraphicsPipelines
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateGraphicsPipelines
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateGraphicsPipelinesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateComputePipelines :: CString
-
-pattern VkCreateComputePipelines <-
-        (is_VkCreateComputePipelines -> True)
-  where VkCreateComputePipelines = _VkCreateComputePipelines
-
-{-# INLINE _VkCreateComputePipelines #-}
-
-_VkCreateComputePipelines :: CString
-_VkCreateComputePipelines = Ptr "vkCreateComputePipelines\NUL"##
-
-{-# INLINE is_VkCreateComputePipelines #-}
-
-is_VkCreateComputePipelines :: CString -> Bool
-is_VkCreateComputePipelines
-  = (EQ ==) . cmpCStrings _VkCreateComputePipelines
-
-type VkCreateComputePipelines = "vkCreateComputePipelines"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateComputePipelines"
-               vkCreateComputePipelines ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateComputePipelines ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkPipelineCache -- ^ pipelineCache
-                                           ->
-                             Word32 -- ^ createInfoCount
-                                    ->
-                               Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                               ->
-                                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> Ptr VkPipeline -- ^ pPipelines
-                                                                             -> IO VkResult
-vkCreateComputePipelines
-  = unsafeDupablePerformIO (vkGetProc @VkCreateComputePipelines)
-
-{-# NOINLINE vkCreateComputePipelines #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateComputePipelines"
-               vkCreateComputePipelinesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateComputePipelinesSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               VkPipelineCache -- ^ pipelineCache
-                                               ->
-                                 Word32 -- ^ createInfoCount
-                                        ->
-                                   Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                                   ->
-                                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> Ptr VkPipeline -- ^ pPipelines
-                                                                                 -> IO VkResult
-vkCreateComputePipelinesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateComputePipelines)
-
-{-# NOINLINE vkCreateComputePipelinesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateComputePipelines
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , uint32_t createInfoCount
---   >     , const VkComputePipelineCreateInfo* pCreateInfos
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipeline* pPipelines
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
-type HS_vkCreateComputePipelines =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ pipelineCache
-                       ->
-         Word32 -- ^ createInfoCount
-                ->
-           Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                           ->
-             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                       -> Ptr VkPipeline -- ^ pPipelines
-                                                         -> IO VkResult
-
-type PFN_vkCreateComputePipelines =
-     FunPtr HS_vkCreateComputePipelines
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateComputePipelines ::
-               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateComputePipelinesSafe ::
-               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
-
-instance VulkanProc "vkCreateComputePipelines" where
-        type VkProcType "vkCreateComputePipelines" =
-             HS_vkCreateComputePipelines
-        vkProcSymbol = _VkCreateComputePipelines
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateComputePipelines
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateComputePipelinesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyPipeline :: CString
-
-pattern VkDestroyPipeline <- (is_VkDestroyPipeline -> True)
-  where VkDestroyPipeline = _VkDestroyPipeline
-
-{-# INLINE _VkDestroyPipeline #-}
-
-_VkDestroyPipeline :: CString
-_VkDestroyPipeline = Ptr "vkDestroyPipeline\NUL"##
-
-{-# INLINE is_VkDestroyPipeline #-}
-
-is_VkDestroyPipeline :: CString -> Bool
-is_VkDestroyPipeline = (EQ ==) . cmpCStrings _VkDestroyPipeline
-
-type VkDestroyPipeline = "vkDestroyPipeline"
-
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyPipeline" vkDestroyPipeline
-               :: VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyPipeline ::
-                  VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyPipeline
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipeline)
-
-{-# NOINLINE vkDestroyPipeline #-}
-##endif
-
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
-               :: VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyPipelineSafe ::
-                      VkDevice -- ^ device
-                               -> VkPipeline -- ^ pipeline
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyPipelineSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipeline)
-
-{-# NOINLINE vkDestroyPipelineSafe #-}
-##endif
-
--- | > void vkDestroyPipeline
---   >     ( VkDevice device
---   >     , VkPipeline pipeline
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
-type HS_vkDestroyPipeline =
-     VkDevice -- ^ device
-              -> VkPipeline -- ^ pipeline
-                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> IO ()
-
-type PFN_vkDestroyPipeline = FunPtr HS_vkDestroyPipeline
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyPipeline ::
-               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
-
-foreign import ccall safe "dynamic" unwrapVkDestroyPipelineSafe ::
-               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
-
-instance VulkanProc "vkDestroyPipeline" where
-        type VkProcType "vkDestroyPipeline" = HS_vkDestroyPipeline
-        vkProcSymbol = _VkDestroyPipeline
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyPipeline
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreatePipelineLayout :: CString
-
-pattern VkCreatePipelineLayout <-
-        (is_VkCreatePipelineLayout -> True)
-  where VkCreatePipelineLayout = _VkCreatePipelineLayout
-
-{-# INLINE _VkCreatePipelineLayout #-}
-
-_VkCreatePipelineLayout :: CString
-_VkCreatePipelineLayout = Ptr "vkCreatePipelineLayout\NUL"##
-
-{-# INLINE is_VkCreatePipelineLayout #-}
-
-is_VkCreatePipelineLayout :: CString -> Bool
-is_VkCreatePipelineLayout
-  = (EQ ==) . cmpCStrings _VkCreatePipelineLayout
-
-type VkCreatePipelineLayout = "vkCreatePipelineLayout"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreatePipelineLayout"
-               vkCreatePipelineLayout ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
-##else
-vkCreatePipelineLayout ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                             -> IO VkResult
-vkCreatePipelineLayout
-  = unsafeDupablePerformIO (vkGetProc @VkCreatePipelineLayout)
-
-{-# NOINLINE vkCreatePipelineLayout #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreatePipelineLayout"
-               vkCreatePipelineLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
-##else
-vkCreatePipelineLayoutSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                            ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                                 -> IO VkResult
-vkCreatePipelineLayoutSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineLayout)
-
-{-# NOINLINE vkCreatePipelineLayoutSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreatePipelineLayout
---   >     ( VkDevice device
---   >     , const VkPipelineLayoutCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipelineLayout* pPipelineLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
-type HS_vkCreatePipelineLayout =
-     VkDevice -- ^ device
-              ->
-       Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                      ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                           -> IO VkResult
-
-type PFN_vkCreatePipelineLayout = FunPtr HS_vkCreatePipelineLayout
-
-foreign import ccall unsafe "dynamic" unwrapVkCreatePipelineLayout
-               :: PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreatePipelineLayoutSafe ::
-               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
-
-instance VulkanProc "vkCreatePipelineLayout" where
-        type VkProcType "vkCreatePipelineLayout" =
-             HS_vkCreatePipelineLayout
-        vkProcSymbol = _VkCreatePipelineLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreatePipelineLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreatePipelineLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyPipelineLayout :: CString
-
-pattern VkDestroyPipelineLayout <-
-        (is_VkDestroyPipelineLayout -> True)
-  where VkDestroyPipelineLayout = _VkDestroyPipelineLayout
-
-{-# INLINE _VkDestroyPipelineLayout #-}
-
-_VkDestroyPipelineLayout :: CString
-_VkDestroyPipelineLayout = Ptr "vkDestroyPipelineLayout\NUL"##
-
-{-# INLINE is_VkDestroyPipelineLayout #-}
-
-is_VkDestroyPipelineLayout :: CString -> Bool
-is_VkDestroyPipelineLayout
-  = (EQ ==) . cmpCStrings _VkDestroyPipelineLayout
-
-type VkDestroyPipelineLayout = "vkDestroyPipelineLayout"
-
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayout ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyPipelineLayout ::
-                        VkDevice -- ^ device
-                                 -> VkPipelineLayout -- ^ pipelineLayout
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyPipelineLayout
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipelineLayout)
-
-{-# NOINLINE vkDestroyPipelineLayout #-}
-##endif
-
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayoutSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyPipelineLayoutSafe ::
-                            VkDevice -- ^ device
-                                     -> VkPipelineLayout -- ^ pipelineLayout
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyPipelineLayoutSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineLayout)
-
-{-# NOINLINE vkDestroyPipelineLayoutSafe #-}
-##endif
-
--- | > void vkDestroyPipelineLayout
---   >     ( VkDevice device
---   >     , VkPipelineLayout pipelineLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
-type HS_vkDestroyPipelineLayout =
-     VkDevice -- ^ device
-              -> VkPipelineLayout -- ^ pipelineLayout
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyPipelineLayout =
-     FunPtr HS_vkDestroyPipelineLayout
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineLayout
-               :: PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyPipelineLayoutSafe ::
-               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
-
-instance VulkanProc "vkDestroyPipelineLayout" where
-        type VkProcType "vkDestroyPipelineLayout" =
-             HS_vkDestroyPipelineLayout
-        vkProcSymbol = _VkDestroyPipelineLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyPipelineLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateSampler :: CString
-
-pattern VkCreateSampler <- (is_VkCreateSampler -> True)
-  where VkCreateSampler = _VkCreateSampler
-
-{-# INLINE _VkCreateSampler #-}
-
-_VkCreateSampler :: CString
-_VkCreateSampler = Ptr "vkCreateSampler\NUL"##
-
-{-# INLINE is_VkCreateSampler #-}
-
-is_VkCreateSampler :: CString -> Bool
-is_VkCreateSampler = (EQ ==) . cmpCStrings _VkCreateSampler
-
-type VkCreateSampler = "vkCreateSampler"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateSampler" vkCreateSampler ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
-##else
-vkCreateSampler ::
-                VkDevice -- ^ device
-                         ->
-                  Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                          ->
-                    Ptr VkAllocationCallbacks -- ^ pAllocator
-                                              -> Ptr VkSampler -- ^ pSampler
-                                                               -> IO VkResult
-vkCreateSampler
-  = unsafeDupablePerformIO (vkGetProc @VkCreateSampler)
-
-{-# NOINLINE vkCreateSampler #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
-##else
-vkCreateSamplerSafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                              ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkSampler -- ^ pSampler
-                                                                   -> IO VkResult
-vkCreateSamplerSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSampler)
-
-{-# NOINLINE vkCreateSamplerSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
---   > VkResult vkCreateSampler
---   >     ( VkDevice device
---   >     , const VkSamplerCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSampler* pSampler
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
-type HS_vkCreateSampler =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                               ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkSampler -- ^ pSampler
-                                                    -> IO VkResult
-
-type PFN_vkCreateSampler = FunPtr HS_vkCreateSampler
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateSampler ::
-               PFN_vkCreateSampler -> HS_vkCreateSampler
-
-foreign import ccall safe "dynamic" unwrapVkCreateSamplerSafe ::
-               PFN_vkCreateSampler -> HS_vkCreateSampler
-
-instance VulkanProc "vkCreateSampler" where
-        type VkProcType "vkCreateSampler" = HS_vkCreateSampler
-        vkProcSymbol = _VkCreateSampler
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSampler
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSamplerSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroySampler :: CString
-
-pattern VkDestroySampler <- (is_VkDestroySampler -> True)
-  where VkDestroySampler = _VkDestroySampler
-
-{-# INLINE _VkDestroySampler #-}
-
-_VkDestroySampler :: CString
-_VkDestroySampler = Ptr "vkDestroySampler\NUL"##
-
-{-# INLINE is_VkDestroySampler #-}
-
-is_VkDestroySampler :: CString -> Bool
-is_VkDestroySampler = (EQ ==) . cmpCStrings _VkDestroySampler
-
-type VkDestroySampler = "vkDestroySampler"
-
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroySampler" vkDestroySampler ::
-               VkDevice -- ^ device
-                        -> VkSampler -- ^ sampler
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-
-##else
-vkDestroySampler ::
-                 VkDevice -- ^ device
-                          -> VkSampler -- ^ sampler
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroySampler
-  = unsafeDupablePerformIO (vkGetProc @VkDestroySampler)
-
-{-# NOINLINE vkDestroySampler #-}
-##endif
-
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
-               :: VkDevice -- ^ device
-                           -> VkSampler -- ^ sampler
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroySamplerSafe ::
-                     VkDevice -- ^ device
-                              -> VkSampler -- ^ sampler
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroySamplerSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySampler)
-
-{-# NOINLINE vkDestroySamplerSafe #-}
-##endif
-
--- | > void vkDestroySampler
---   >     ( VkDevice device
---   >     , VkSampler sampler
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
-type HS_vkDestroySampler =
-     VkDevice -- ^ device
-              -> VkSampler -- ^ sampler
-                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> IO ()
-
-type PFN_vkDestroySampler = FunPtr HS_vkDestroySampler
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroySampler ::
-               PFN_vkDestroySampler -> HS_vkDestroySampler
-
-foreign import ccall safe "dynamic" unwrapVkDestroySamplerSafe ::
-               PFN_vkDestroySampler -> HS_vkDestroySampler
-
-instance VulkanProc "vkDestroySampler" where
-        type VkProcType "vkDestroySampler" = HS_vkDestroySampler
-        vkProcSymbol = _VkDestroySampler
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySampler
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySamplerSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateDescriptorSetLayout :: CString
-
-pattern VkCreateDescriptorSetLayout <-
-        (is_VkCreateDescriptorSetLayout -> True)
-  where VkCreateDescriptorSetLayout = _VkCreateDescriptorSetLayout
-
-{-# INLINE _VkCreateDescriptorSetLayout #-}
-
-_VkCreateDescriptorSetLayout :: CString
-_VkCreateDescriptorSetLayout
-  = Ptr "vkCreateDescriptorSetLayout\NUL"##
-
-{-# INLINE is_VkCreateDescriptorSetLayout #-}
-
-is_VkCreateDescriptorSetLayout :: CString -> Bool
-is_VkCreateDescriptorSetLayout
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorSetLayout
-
-type VkCreateDescriptorSetLayout = "vkCreateDescriptorSetLayout"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayout ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
-##else
-vkCreateDescriptorSetLayout ::
-                            VkDevice -- ^ device
-                                     ->
-                              Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                  ->
-                                Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          ->
-                                  Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                            -> IO VkResult
-vkCreateDescriptorSetLayout
-  = unsafeDupablePerformIO (vkGetProc @VkCreateDescriptorSetLayout)
-
-{-# NOINLINE vkCreateDescriptorSetLayout #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
-##else
-vkCreateDescriptorSetLayoutSafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                      ->
-                                    Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              ->
-                                      Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                                -> IO VkResult
-vkCreateDescriptorSetLayoutSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCreateDescriptorSetLayout)
-
-{-# NOINLINE vkCreateDescriptorSetLayoutSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorSetLayout
---   >     ( VkDevice device
---   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorSetLayout* pSetLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
-type HS_vkCreateDescriptorSetLayout =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                           ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                     -> IO VkResult
-
-type PFN_vkCreateDescriptorSetLayout =
-     FunPtr HS_vkCreateDescriptorSetLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDescriptorSetLayout ::
-               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateDescriptorSetLayoutSafe ::
-               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
-
-instance VulkanProc "vkCreateDescriptorSetLayout" where
-        type VkProcType "vkCreateDescriptorSetLayout" =
-             HS_vkCreateDescriptorSetLayout
-        vkProcSymbol = _VkCreateDescriptorSetLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorSetLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorSetLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDescriptorSetLayout :: CString
-
-pattern VkDestroyDescriptorSetLayout <-
-        (is_VkDestroyDescriptorSetLayout -> True)
-  where VkDestroyDescriptorSetLayout = _VkDestroyDescriptorSetLayout
-
-{-# INLINE _VkDestroyDescriptorSetLayout #-}
-
-_VkDestroyDescriptorSetLayout :: CString
-_VkDestroyDescriptorSetLayout
-  = Ptr "vkDestroyDescriptorSetLayout\NUL"##
-
-{-# INLINE is_VkDestroyDescriptorSetLayout #-}
-
-is_VkDestroyDescriptorSetLayout :: CString -> Bool
-is_VkDestroyDescriptorSetLayout
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorSetLayout
-
-type VkDestroyDescriptorSetLayout = "vkDestroyDescriptorSetLayout"
-
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayout ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyDescriptorSetLayout ::
-                             VkDevice -- ^ device
-                                      ->
-                               VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyDescriptorSetLayout
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyDescriptorSetLayout)
-
-{-# NOINLINE vkDestroyDescriptorSetLayout #-}
-##endif
-
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyDescriptorSetLayoutSafe ::
-                                 VkDevice -- ^ device
-                                          ->
-                                   VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyDescriptorSetLayoutSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkDestroyDescriptorSetLayout)
-
-{-# NOINLINE vkDestroyDescriptorSetLayoutSafe #-}
-##endif
-
--- | > void vkDestroyDescriptorSetLayout
---   >     ( VkDevice device
---   >     , VkDescriptorSetLayout descriptorSetLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
-type HS_vkDestroyDescriptorSetLayout =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorSetLayout -- ^ descriptorSetLayout
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyDescriptorSetLayout =
-     FunPtr HS_vkDestroyDescriptorSetLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDescriptorSetLayout ::
-               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyDescriptorSetLayoutSafe ::
-               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
-
-instance VulkanProc "vkDestroyDescriptorSetLayout" where
-        type VkProcType "vkDestroyDescriptorSetLayout" =
-             HS_vkDestroyDescriptorSetLayout
-        vkProcSymbol = _VkDestroyDescriptorSetLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorSetLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorSetLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateDescriptorPool :: CString
-
-pattern VkCreateDescriptorPool <-
-        (is_VkCreateDescriptorPool -> True)
-  where VkCreateDescriptorPool = _VkCreateDescriptorPool
-
-{-# INLINE _VkCreateDescriptorPool #-}
-
-_VkCreateDescriptorPool :: CString
-_VkCreateDescriptorPool = Ptr "vkCreateDescriptorPool\NUL"##
-
-{-# INLINE is_VkCreateDescriptorPool #-}
-
-is_VkCreateDescriptorPool :: CString -> Bool
-is_VkCreateDescriptorPool
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorPool
-
-type VkCreateDescriptorPool = "vkCreateDescriptorPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateDescriptorPool"
-               vkCreateDescriptorPool ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
-##else
-vkCreateDescriptorPool ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                             -> IO VkResult
-vkCreateDescriptorPool
-  = unsafeDupablePerformIO (vkGetProc @VkCreateDescriptorPool)
-
-{-# NOINLINE vkCreateDescriptorPool #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateDescriptorPool"
-               vkCreateDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
-##else
-vkCreateDescriptorPoolSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                            ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                                 -> IO VkResult
-vkCreateDescriptorPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDescriptorPool)
-
-{-# NOINLINE vkCreateDescriptorPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
---   > VkResult vkCreateDescriptorPool
---   >     ( VkDevice device
---   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorPool* pDescriptorPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
-type HS_vkCreateDescriptorPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                      ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                           -> IO VkResult
-
-type PFN_vkCreateDescriptorPool = FunPtr HS_vkCreateDescriptorPool
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateDescriptorPool
-               :: PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateDescriptorPoolSafe ::
-               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
-
-instance VulkanProc "vkCreateDescriptorPool" where
-        type VkProcType "vkCreateDescriptorPool" =
-             HS_vkCreateDescriptorPool
-        vkProcSymbol = _VkCreateDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDescriptorPool :: CString
-
-pattern VkDestroyDescriptorPool <-
-        (is_VkDestroyDescriptorPool -> True)
-  where VkDestroyDescriptorPool = _VkDestroyDescriptorPool
-
-{-# INLINE _VkDestroyDescriptorPool #-}
-
-_VkDestroyDescriptorPool :: CString
-_VkDestroyDescriptorPool = Ptr "vkDestroyDescriptorPool\NUL"##
-
-{-# INLINE is_VkDestroyDescriptorPool #-}
-
-is_VkDestroyDescriptorPool :: CString -> Bool
-is_VkDestroyDescriptorPool
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorPool
-
-type VkDestroyDescriptorPool = "vkDestroyDescriptorPool"
-
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPool ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyDescriptorPool ::
-                        VkDevice -- ^ device
-                                 -> VkDescriptorPool -- ^ descriptorPool
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyDescriptorPool
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyDescriptorPool)
-
-{-# NOINLINE vkDestroyDescriptorPool #-}
-##endif
-
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyDescriptorPoolSafe ::
-                            VkDevice -- ^ device
-                                     -> VkDescriptorPool -- ^ descriptorPool
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyDescriptorPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDescriptorPool)
-
-{-# NOINLINE vkDestroyDescriptorPoolSafe #-}
-##endif
-
--- | > void vkDestroyDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
-type HS_vkDestroyDescriptorPool =
-     VkDevice -- ^ device
-              -> VkDescriptorPool -- ^ descriptorPool
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyDescriptorPool =
-     FunPtr HS_vkDestroyDescriptorPool
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyDescriptorPool
-               :: PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyDescriptorPoolSafe ::
-               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
-
-instance VulkanProc "vkDestroyDescriptorPool" where
-        type VkProcType "vkDestroyDescriptorPool" =
-             HS_vkDestroyDescriptorPool
-        vkProcSymbol = _VkDestroyDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetDescriptorPool :: CString
-
-pattern VkResetDescriptorPool <- (is_VkResetDescriptorPool -> True)
-  where VkResetDescriptorPool = _VkResetDescriptorPool
-
-{-# INLINE _VkResetDescriptorPool #-}
-
-_VkResetDescriptorPool :: CString
-_VkResetDescriptorPool = Ptr "vkResetDescriptorPool\NUL"##
-
-{-# INLINE is_VkResetDescriptorPool #-}
-
-is_VkResetDescriptorPool :: CString -> Bool
-is_VkResetDescriptorPool
-  = (EQ ==) . cmpCStrings _VkResetDescriptorPool
-
-type VkResetDescriptorPool = "vkResetDescriptorPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetDescriptorPool"
-               vkResetDescriptorPool ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
-##else
-vkResetDescriptorPool ::
-                      VkDevice -- ^ device
-                               ->
-                        VkDescriptorPool -- ^ descriptorPool
-                                         -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                       -> IO VkResult
-vkResetDescriptorPool
-  = unsafeDupablePerformIO (vkGetProc @VkResetDescriptorPool)
-
-{-# NOINLINE vkResetDescriptorPool #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetDescriptorPool"
-               vkResetDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
-##else
-vkResetDescriptorPoolSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkDescriptorPool -- ^ descriptorPool
-                                             -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                           -> IO VkResult
-vkResetDescriptorPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetDescriptorPool)
-
-{-# NOINLINE vkResetDescriptorPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , VkDescriptorPoolResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
-type HS_vkResetDescriptorPool =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorPool -- ^ descriptorPool
-                        -> VkDescriptorPoolResetFlags -- ^ flags
-                                                      -> IO VkResult
-
-type PFN_vkResetDescriptorPool = FunPtr HS_vkResetDescriptorPool
-
-foreign import ccall unsafe "dynamic" unwrapVkResetDescriptorPool
-               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
-
-foreign import ccall safe "dynamic" unwrapVkResetDescriptorPoolSafe
-               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
-
-instance VulkanProc "vkResetDescriptorPool" where
-        type VkProcType "vkResetDescriptorPool" = HS_vkResetDescriptorPool
-        vkProcSymbol = _VkResetDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetDescriptorPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkResetDescriptorPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkAllocateDescriptorSets :: CString
-
-pattern VkAllocateDescriptorSets <-
-        (is_VkAllocateDescriptorSets -> True)
-  where VkAllocateDescriptorSets = _VkAllocateDescriptorSets
-
-{-# INLINE _VkAllocateDescriptorSets #-}
-
-_VkAllocateDescriptorSets :: CString
-_VkAllocateDescriptorSets = Ptr "vkAllocateDescriptorSets\NUL"##
-
-{-# INLINE is_VkAllocateDescriptorSets #-}
-
-is_VkAllocateDescriptorSets :: CString -> Bool
-is_VkAllocateDescriptorSets
-  = (EQ ==) . cmpCStrings _VkAllocateDescriptorSets
-
-type VkAllocateDescriptorSets = "vkAllocateDescriptorSets"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
-##else
-vkAllocateDescriptorSets ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                           ->
-                             Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                 -> IO VkResult
-vkAllocateDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkAllocateDescriptorSets)
-
-{-# NOINLINE vkAllocateDescriptorSets #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
-##else
-vkAllocateDescriptorSetsSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                               ->
-                                 Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> IO VkResult
-vkAllocateDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateDescriptorSets)
-
-{-# NOINLINE vkAllocateDescriptorSetsSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
---   > VkResult vkAllocateDescriptorSets
---   >     ( VkDevice device
---   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
---   >     , VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
-type HS_vkAllocateDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                       ->
-         Ptr VkDescriptorSet -- ^ pDescriptorSets
-                             -> IO VkResult
-
-type PFN_vkAllocateDescriptorSets =
-     FunPtr HS_vkAllocateDescriptorSets
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkAllocateDescriptorSets ::
-               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
-
-foreign import ccall safe "dynamic"
-               unwrapVkAllocateDescriptorSetsSafe ::
-               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
-
-instance VulkanProc "vkAllocateDescriptorSets" where
-        type VkProcType "vkAllocateDescriptorSets" =
-             HS_vkAllocateDescriptorSets
-        vkProcSymbol = _VkAllocateDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAllocateDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkAllocateDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFreeDescriptorSets :: CString
-
-pattern VkFreeDescriptorSets <- (is_VkFreeDescriptorSets -> True)
-  where VkFreeDescriptorSets = _VkFreeDescriptorSets
-
-{-# INLINE _VkFreeDescriptorSets #-}
-
-_VkFreeDescriptorSets :: CString
-_VkFreeDescriptorSets = Ptr "vkFreeDescriptorSets\NUL"##
-
-{-# INLINE is_VkFreeDescriptorSets #-}
-
-is_VkFreeDescriptorSets :: CString -> Bool
-is_VkFreeDescriptorSets
-  = (EQ ==) . cmpCStrings _VkFreeDescriptorSets
-
-type VkFreeDescriptorSets = "vkFreeDescriptorSets"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFreeDescriptorSets"
-               vkFreeDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
-##else
-vkFreeDescriptorSets ::
-                     VkDevice -- ^ device
-                              ->
-                       VkDescriptorPool -- ^ descriptorPool
-                                        -> Word32 -- ^ descriptorSetCount
-                                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                         -> IO VkResult
-vkFreeDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkFreeDescriptorSets)
-
-{-# NOINLINE vkFreeDescriptorSets #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFreeDescriptorSets"
-               vkFreeDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
-##else
-vkFreeDescriptorSetsSafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkDescriptorPool -- ^ descriptorPool
-                                            -> Word32 -- ^ descriptorSetCount
-                                                      -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                             -> IO VkResult
-vkFreeDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeDescriptorSets)
-
-{-# NOINLINE vkFreeDescriptorSetsSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkFreeDescriptorSets
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , uint32_t descriptorSetCount
---   >     , const VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
-type HS_vkFreeDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorPool -- ^ descriptorPool
-                        -> Word32 -- ^ descriptorSetCount
-                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                         -> IO VkResult
-
-type PFN_vkFreeDescriptorSets = FunPtr HS_vkFreeDescriptorSets
-
-foreign import ccall unsafe "dynamic" unwrapVkFreeDescriptorSets ::
-               PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
-
-foreign import ccall safe "dynamic" unwrapVkFreeDescriptorSetsSafe
-               :: PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
-
-instance VulkanProc "vkFreeDescriptorSets" where
-        type VkProcType "vkFreeDescriptorSets" = HS_vkFreeDescriptorSets
-        vkProcSymbol = _VkFreeDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFreeDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkFreeDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkUpdateDescriptorSets :: CString
-
-pattern VkUpdateDescriptorSets <-
-        (is_VkUpdateDescriptorSets -> True)
-  where VkUpdateDescriptorSets = _VkUpdateDescriptorSets
-
-{-# INLINE _VkUpdateDescriptorSets #-}
-
-_VkUpdateDescriptorSets :: CString
-_VkUpdateDescriptorSets = Ptr "vkUpdateDescriptorSets\NUL"##
-
-{-# INLINE is_VkUpdateDescriptorSets #-}
-
-is_VkUpdateDescriptorSets :: CString -> Bool
-is_VkUpdateDescriptorSets
-  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSets
-
-type VkUpdateDescriptorSets = "vkUpdateDescriptorSets"
-
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
-##else
-vkUpdateDescriptorSets ::
-                       VkDevice -- ^ device
-                                ->
-                         Word32 -- ^ descriptorWriteCount
-                                ->
-                           Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                    ->
-                             Word32 -- ^ descriptorCopyCount
-                                    -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                               -> IO ()
-vkUpdateDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkUpdateDescriptorSets)
-
-{-# NOINLINE vkUpdateDescriptorSets #-}
-##endif
-
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
-##else
-vkUpdateDescriptorSetsSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Word32 -- ^ descriptorWriteCount
-                                    ->
-                               Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                        ->
-                                 Word32 -- ^ descriptorCopyCount
-                                        -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                                   -> IO ()
-vkUpdateDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkUpdateDescriptorSets)
-
-{-# NOINLINE vkUpdateDescriptorSetsSafe #-}
-##endif
-
--- | > void vkUpdateDescriptorSets
---   >     ( VkDevice device
---   >     , uint32_t descriptorWriteCount
---   >     , const VkWriteDescriptorSet* pDescriptorWrites
---   >     , uint32_t descriptorCopyCount
---   >     , const VkCopyDescriptorSet* pDescriptorCopies
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
-type HS_vkUpdateDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ descriptorWriteCount
-              ->
-         Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                  ->
-           Word32 -- ^ descriptorCopyCount
-                  -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                             -> IO ()
-
-type PFN_vkUpdateDescriptorSets = FunPtr HS_vkUpdateDescriptorSets
-
-foreign import ccall unsafe "dynamic" unwrapVkUpdateDescriptorSets
-               :: PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
-
-foreign import ccall safe "dynamic"
-               unwrapVkUpdateDescriptorSetsSafe ::
-               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
-
-instance VulkanProc "vkUpdateDescriptorSets" where
-        type VkProcType "vkUpdateDescriptorSets" =
-             HS_vkUpdateDescriptorSets
-        vkProcSymbol = _VkUpdateDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUpdateDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateFramebuffer :: CString
-
-pattern VkCreateFramebuffer <- (is_VkCreateFramebuffer -> True)
-  where VkCreateFramebuffer = _VkCreateFramebuffer
-
-{-# INLINE _VkCreateFramebuffer #-}
-
-_VkCreateFramebuffer :: CString
-_VkCreateFramebuffer = Ptr "vkCreateFramebuffer\NUL"##
-
-{-# INLINE is_VkCreateFramebuffer #-}
-
-is_VkCreateFramebuffer :: CString -> Bool
-is_VkCreateFramebuffer = (EQ ==) . cmpCStrings _VkCreateFramebuffer
-
-type VkCreateFramebuffer = "vkCreateFramebuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateFramebuffer"
-               vkCreateFramebuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
-##else
-vkCreateFramebuffer ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                  ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                       -> IO VkResult
-vkCreateFramebuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCreateFramebuffer)
-
-{-# NOINLINE vkCreateFramebuffer #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateFramebuffer"
-               vkCreateFramebufferSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
-##else
-vkCreateFramebufferSafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                      ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                           -> IO VkResult
-vkCreateFramebufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFramebuffer)
-
-{-# NOINLINE vkCreateFramebufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateFramebuffer
---   >     ( VkDevice device
---   >     , const VkFramebufferCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkFramebuffer* pFramebuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
-type HS_vkCreateFramebuffer =
-     VkDevice -- ^ device
-              ->
-       Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                   ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                        -> IO VkResult
-
-type PFN_vkCreateFramebuffer = FunPtr HS_vkCreateFramebuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateFramebuffer ::
-               PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
-
-foreign import ccall safe "dynamic" unwrapVkCreateFramebufferSafe
-               :: PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
-
-instance VulkanProc "vkCreateFramebuffer" where
-        type VkProcType "vkCreateFramebuffer" = HS_vkCreateFramebuffer
-        vkProcSymbol = _VkCreateFramebuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateFramebuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateFramebufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyFramebuffer :: CString
-
-pattern VkDestroyFramebuffer <- (is_VkDestroyFramebuffer -> True)
-  where VkDestroyFramebuffer = _VkDestroyFramebuffer
-
-{-# INLINE _VkDestroyFramebuffer #-}
-
-_VkDestroyFramebuffer :: CString
-_VkDestroyFramebuffer = Ptr "vkDestroyFramebuffer\NUL"##
-
-{-# INLINE is_VkDestroyFramebuffer #-}
-
-is_VkDestroyFramebuffer :: CString -> Bool
-is_VkDestroyFramebuffer
-  = (EQ ==) . cmpCStrings _VkDestroyFramebuffer
-
-type VkDestroyFramebuffer = "vkDestroyFramebuffer"
-
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyFramebuffer"
-               vkDestroyFramebuffer ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyFramebuffer ::
-                     VkDevice -- ^ device
-                              -> VkFramebuffer -- ^ framebuffer
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyFramebuffer
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyFramebuffer)
-
-{-# NOINLINE vkDestroyFramebuffer #-}
-##endif
-
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyFramebuffer"
-               vkDestroyFramebufferSafe ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyFramebufferSafe ::
-                         VkDevice -- ^ device
-                                  -> VkFramebuffer -- ^ framebuffer
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyFramebufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFramebuffer)
-
-{-# NOINLINE vkDestroyFramebufferSafe #-}
-##endif
-
--- | > void vkDestroyFramebuffer
---   >     ( VkDevice device
---   >     , VkFramebuffer framebuffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
-type HS_vkDestroyFramebuffer =
-     VkDevice -- ^ device
-              -> VkFramebuffer -- ^ framebuffer
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-
-type PFN_vkDestroyFramebuffer = FunPtr HS_vkDestroyFramebuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyFramebuffer ::
-               PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
-
-foreign import ccall safe "dynamic" unwrapVkDestroyFramebufferSafe
-               :: PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
-
-instance VulkanProc "vkDestroyFramebuffer" where
-        type VkProcType "vkDestroyFramebuffer" = HS_vkDestroyFramebuffer
-        vkProcSymbol = _VkDestroyFramebuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyFramebuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyFramebufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateRenderPass :: CString
-
-pattern VkCreateRenderPass <- (is_VkCreateRenderPass -> True)
-  where VkCreateRenderPass = _VkCreateRenderPass
-
-{-# INLINE _VkCreateRenderPass #-}
-
-_VkCreateRenderPass :: CString
-_VkCreateRenderPass = Ptr "vkCreateRenderPass\NUL"##
-
-{-# INLINE is_VkCreateRenderPass #-}
-
-is_VkCreateRenderPass :: CString -> Bool
-is_VkCreateRenderPass = (EQ ==) . cmpCStrings _VkCreateRenderPass
-
-type VkCreateRenderPass = "vkCreateRenderPass"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateRenderPass" vkCreateRenderPass
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
-##else
-vkCreateRenderPass ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                     -> IO VkResult
-vkCreateRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkCreateRenderPass)
-
-{-# NOINLINE vkCreateRenderPass #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateRenderPass"
-               vkCreateRenderPassSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
-##else
-vkCreateRenderPassSafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                    ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                         -> IO VkResult
-vkCreateRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateRenderPass)
-
-{-# NOINLINE vkCreateRenderPassSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateRenderPass
---   >     ( VkDevice device
---   >     , const VkRenderPassCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkRenderPass* pRenderPass
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
-type HS_vkCreateRenderPass =
-     VkDevice -- ^ device
-              ->
-       Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                  ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkRenderPass -- ^ pRenderPass
-                                                       -> IO VkResult
-
-type PFN_vkCreateRenderPass = FunPtr HS_vkCreateRenderPass
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateRenderPass ::
-               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkCreateRenderPassSafe ::
-               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
-
-instance VulkanProc "vkCreateRenderPass" where
-        type VkProcType "vkCreateRenderPass" = HS_vkCreateRenderPass
-        vkProcSymbol = _VkCreateRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyRenderPass :: CString
-
-pattern VkDestroyRenderPass <- (is_VkDestroyRenderPass -> True)
-  where VkDestroyRenderPass = _VkDestroyRenderPass
-
-{-# INLINE _VkDestroyRenderPass #-}
-
-_VkDestroyRenderPass :: CString
-_VkDestroyRenderPass = Ptr "vkDestroyRenderPass\NUL"##
-
-{-# INLINE is_VkDestroyRenderPass #-}
-
-is_VkDestroyRenderPass :: CString -> Bool
-is_VkDestroyRenderPass = (EQ ==) . cmpCStrings _VkDestroyRenderPass
-
-type VkDestroyRenderPass = "vkDestroyRenderPass"
-
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyRenderPass"
-               vkDestroyRenderPass ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyRenderPass ::
-                    VkDevice -- ^ device
-                             -> VkRenderPass -- ^ renderPass
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyRenderPass)
-
-{-# NOINLINE vkDestroyRenderPass #-}
-##endif
-
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyRenderPass"
-               vkDestroyRenderPassSafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyRenderPassSafe ::
-                        VkDevice -- ^ device
-                                 -> VkRenderPass -- ^ renderPass
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyRenderPass)
-
-{-# NOINLINE vkDestroyRenderPassSafe #-}
-##endif
-
--- | > void vkDestroyRenderPass
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
-type HS_vkDestroyRenderPass =
-     VkDevice -- ^ device
-              -> VkRenderPass -- ^ renderPass
-                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> IO ()
-
-type PFN_vkDestroyRenderPass = FunPtr HS_vkDestroyRenderPass
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyRenderPass ::
-               PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkDestroyRenderPassSafe
-               :: PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
-
-instance VulkanProc "vkDestroyRenderPass" where
-        type VkProcType "vkDestroyRenderPass" = HS_vkDestroyRenderPass
-        vkProcSymbol = _VkDestroyRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetRenderAreaGranularity :: CString
-
-pattern VkGetRenderAreaGranularity <-
-        (is_VkGetRenderAreaGranularity -> True)
-  where VkGetRenderAreaGranularity = _VkGetRenderAreaGranularity
-
-{-# INLINE _VkGetRenderAreaGranularity #-}
-
-_VkGetRenderAreaGranularity :: CString
-_VkGetRenderAreaGranularity = Ptr "vkGetRenderAreaGranularity\NUL"##
-
-{-# INLINE is_VkGetRenderAreaGranularity #-}
-
-is_VkGetRenderAreaGranularity :: CString -> Bool
-is_VkGetRenderAreaGranularity
-  = (EQ ==) . cmpCStrings _VkGetRenderAreaGranularity
-
-type VkGetRenderAreaGranularity = "vkGetRenderAreaGranularity"
-
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularity ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
-##else
-vkGetRenderAreaGranularity ::
-                           VkDevice -- ^ device
-                                    -> VkRenderPass -- ^ renderPass
-                                                    -> Ptr VkExtent2D -- ^ pGranularity
-                                                                      -> IO ()
-vkGetRenderAreaGranularity
-  = unsafeDupablePerformIO (vkGetProc @VkGetRenderAreaGranularity)
-
-{-# NOINLINE vkGetRenderAreaGranularity #-}
-##endif
-
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularitySafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
-##else
-vkGetRenderAreaGranularitySafe ::
-                               VkDevice -- ^ device
-                                        -> VkRenderPass -- ^ renderPass
-                                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                                          -> IO ()
-vkGetRenderAreaGranularitySafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetRenderAreaGranularity)
-
-{-# NOINLINE vkGetRenderAreaGranularitySafe #-}
-##endif
-
--- | > void vkGetRenderAreaGranularity
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , VkExtent2D* pGranularity
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
-type HS_vkGetRenderAreaGranularity =
-     VkDevice -- ^ device
-              -> VkRenderPass -- ^ renderPass
-                              -> Ptr VkExtent2D -- ^ pGranularity
-                                                -> IO ()
-
-type PFN_vkGetRenderAreaGranularity =
-     FunPtr HS_vkGetRenderAreaGranularity
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetRenderAreaGranularity ::
-               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetRenderAreaGranularitySafe ::
-               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
-
-instance VulkanProc "vkGetRenderAreaGranularity" where
-        type VkProcType "vkGetRenderAreaGranularity" =
-             HS_vkGetRenderAreaGranularity
-        vkProcSymbol = _VkGetRenderAreaGranularity
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetRenderAreaGranularity
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetRenderAreaGranularitySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateCommandPool :: CString
-
-pattern VkCreateCommandPool <- (is_VkCreateCommandPool -> True)
-  where VkCreateCommandPool = _VkCreateCommandPool
-
-{-# INLINE _VkCreateCommandPool #-}
-
-_VkCreateCommandPool :: CString
-_VkCreateCommandPool = Ptr "vkCreateCommandPool\NUL"##
-
-{-# INLINE is_VkCreateCommandPool #-}
-
-is_VkCreateCommandPool :: CString -> Bool
-is_VkCreateCommandPool = (EQ ==) . cmpCStrings _VkCreateCommandPool
-
-type VkCreateCommandPool = "vkCreateCommandPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateCommandPool"
-               vkCreateCommandPool ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
-##else
-vkCreateCommandPool ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                  ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                       -> IO VkResult
-vkCreateCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkCreateCommandPool)
-
-{-# NOINLINE vkCreateCommandPool #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateCommandPool"
-               vkCreateCommandPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
-##else
-vkCreateCommandPoolSafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                      ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                           -> IO VkResult
-vkCreateCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateCommandPool)
-
-{-# NOINLINE vkCreateCommandPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateCommandPool
---   >     ( VkDevice device
---   >     , const VkCommandPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkCommandPool* pCommandPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
-type HS_vkCreateCommandPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                   ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkCommandPool -- ^ pCommandPool
-                                                        -> IO VkResult
-
-type PFN_vkCreateCommandPool = FunPtr HS_vkCreateCommandPool
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateCommandPool ::
-               PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkCreateCommandPoolSafe
-               :: PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
-
-instance VulkanProc "vkCreateCommandPool" where
-        type VkProcType "vkCreateCommandPool" = HS_vkCreateCommandPool
-        vkProcSymbol = _VkCreateCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyCommandPool :: CString
-
-pattern VkDestroyCommandPool <- (is_VkDestroyCommandPool -> True)
-  where VkDestroyCommandPool = _VkDestroyCommandPool
-
-{-# INLINE _VkDestroyCommandPool #-}
-
-_VkDestroyCommandPool :: CString
-_VkDestroyCommandPool = Ptr "vkDestroyCommandPool\NUL"##
-
-{-# INLINE is_VkDestroyCommandPool #-}
-
-is_VkDestroyCommandPool :: CString -> Bool
-is_VkDestroyCommandPool
-  = (EQ ==) . cmpCStrings _VkDestroyCommandPool
-
-type VkDestroyCommandPool = "vkDestroyCommandPool"
-
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyCommandPool"
-               vkDestroyCommandPool ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyCommandPool ::
-                     VkDevice -- ^ device
-                              -> VkCommandPool -- ^ commandPool
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyCommandPool)
-
-{-# NOINLINE vkDestroyCommandPool #-}
-##endif
-
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyCommandPool"
-               vkDestroyCommandPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyCommandPoolSafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyCommandPool)
-
-{-# NOINLINE vkDestroyCommandPoolSafe #-}
-##endif
-
--- | > void vkDestroyCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
-type HS_vkDestroyCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-
-type PFN_vkDestroyCommandPool = FunPtr HS_vkDestroyCommandPool
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyCommandPool ::
-               PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkDestroyCommandPoolSafe
-               :: PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
-
-instance VulkanProc "vkDestroyCommandPool" where
-        type VkProcType "vkDestroyCommandPool" = HS_vkDestroyCommandPool
-        vkProcSymbol = _VkDestroyCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetCommandPool :: CString
-
-pattern VkResetCommandPool <- (is_VkResetCommandPool -> True)
-  where VkResetCommandPool = _VkResetCommandPool
-
-{-# INLINE _VkResetCommandPool #-}
-
-_VkResetCommandPool :: CString
-_VkResetCommandPool = Ptr "vkResetCommandPool\NUL"##
-
-{-# INLINE is_VkResetCommandPool #-}
-
-is_VkResetCommandPool :: CString -> Bool
-is_VkResetCommandPool = (EQ ==) . cmpCStrings _VkResetCommandPool
-
-type VkResetCommandPool = "vkResetCommandPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetCommandPool" vkResetCommandPool
-               ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
-##else
-vkResetCommandPool ::
-                   VkDevice -- ^ device
-                            -> VkCommandPool -- ^ commandPool
-                                             -> VkCommandPoolResetFlags -- ^ flags
-                                                                        -> IO VkResult
-vkResetCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkResetCommandPool)
-
-{-# NOINLINE vkResetCommandPool #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetCommandPool"
-               vkResetCommandPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
-##else
-vkResetCommandPoolSafe ::
-                       VkDevice -- ^ device
-                                -> VkCommandPool -- ^ commandPool
-                                                 -> VkCommandPoolResetFlags -- ^ flags
-                                                                            -> IO VkResult
-vkResetCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandPool)
-
-{-# NOINLINE vkResetCommandPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , VkCommandPoolResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
-type HS_vkResetCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> VkCommandPoolResetFlags -- ^ flags
-                                                          -> IO VkResult
-
-type PFN_vkResetCommandPool = FunPtr HS_vkResetCommandPool
-
-foreign import ccall unsafe "dynamic" unwrapVkResetCommandPool ::
-               PFN_vkResetCommandPool -> HS_vkResetCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkResetCommandPoolSafe ::
-               PFN_vkResetCommandPool -> HS_vkResetCommandPool
-
-instance VulkanProc "vkResetCommandPool" where
-        type VkProcType "vkResetCommandPool" = HS_vkResetCommandPool
-        vkProcSymbol = _VkResetCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkResetCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkAllocateCommandBuffers :: CString
-
-pattern VkAllocateCommandBuffers <-
-        (is_VkAllocateCommandBuffers -> True)
-  where VkAllocateCommandBuffers = _VkAllocateCommandBuffers
-
-{-# INLINE _VkAllocateCommandBuffers #-}
-
-_VkAllocateCommandBuffers :: CString
-_VkAllocateCommandBuffers = Ptr "vkAllocateCommandBuffers\NUL"##
-
-{-# INLINE is_VkAllocateCommandBuffers #-}
-
-is_VkAllocateCommandBuffers :: CString -> Bool
-is_VkAllocateCommandBuffers
-  = (EQ ==) . cmpCStrings _VkAllocateCommandBuffers
-
-type VkAllocateCommandBuffers = "vkAllocateCommandBuffers"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffers ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
-##else
-vkAllocateCommandBuffers ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                           ->
-                             Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                 -> IO VkResult
-vkAllocateCommandBuffers
-  = unsafeDupablePerformIO (vkGetProc @VkAllocateCommandBuffers)
-
-{-# NOINLINE vkAllocateCommandBuffers #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffersSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
-##else
-vkAllocateCommandBuffersSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                               ->
-                                 Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                     -> IO VkResult
-vkAllocateCommandBuffersSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateCommandBuffers)
-
-{-# NOINLINE vkAllocateCommandBuffersSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkAllocateCommandBuffers
---   >     ( VkDevice device
---   >     , const VkCommandBufferAllocateInfo* pAllocateInfo
---   >     , VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
-type HS_vkAllocateCommandBuffers =
-     VkDevice -- ^ device
-              ->
-       Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                       ->
-         Ptr VkCommandBuffer -- ^ pCommandBuffers
-                             -> IO VkResult
-
-type PFN_vkAllocateCommandBuffers =
-     FunPtr HS_vkAllocateCommandBuffers
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkAllocateCommandBuffers ::
-               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
-
-foreign import ccall safe "dynamic"
-               unwrapVkAllocateCommandBuffersSafe ::
-               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
-
-instance VulkanProc "vkAllocateCommandBuffers" where
-        type VkProcType "vkAllocateCommandBuffers" =
-             HS_vkAllocateCommandBuffers
-        vkProcSymbol = _VkAllocateCommandBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAllocateCommandBuffers
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkAllocateCommandBuffersSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFreeCommandBuffers :: CString
-
-pattern VkFreeCommandBuffers <- (is_VkFreeCommandBuffers -> True)
-  where VkFreeCommandBuffers = _VkFreeCommandBuffers
-
-{-# INLINE _VkFreeCommandBuffers #-}
-
-_VkFreeCommandBuffers :: CString
-_VkFreeCommandBuffers = Ptr "vkFreeCommandBuffers\NUL"##
-
-{-# INLINE is_VkFreeCommandBuffers #-}
-
-is_VkFreeCommandBuffers :: CString -> Bool
-is_VkFreeCommandBuffers
-  = (EQ ==) . cmpCStrings _VkFreeCommandBuffers
-
-type VkFreeCommandBuffers = "vkFreeCommandBuffers"
-
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFreeCommandBuffers"
-               vkFreeCommandBuffers ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
-##else
-vkFreeCommandBuffers ::
-                     VkDevice -- ^ device
-                              -> VkCommandPool -- ^ commandPool
-                                               -> Word32 -- ^ commandBufferCount
-                                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                -> IO ()
-vkFreeCommandBuffers
-  = unsafeDupablePerformIO (vkGetProc @VkFreeCommandBuffers)
-
-{-# NOINLINE vkFreeCommandBuffers #-}
-##endif
-
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFreeCommandBuffers"
-               vkFreeCommandBuffersSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
-##else
-vkFreeCommandBuffersSafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> Word32 -- ^ commandBufferCount
-                                                             -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                    -> IO ()
-vkFreeCommandBuffersSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeCommandBuffers)
-
-{-# NOINLINE vkFreeCommandBuffersSafe #-}
-##endif
-
--- | > void vkFreeCommandBuffers
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
-type HS_vkFreeCommandBuffers =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-type PFN_vkFreeCommandBuffers = FunPtr HS_vkFreeCommandBuffers
-
-foreign import ccall unsafe "dynamic" unwrapVkFreeCommandBuffers ::
-               PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
-
-foreign import ccall safe "dynamic" unwrapVkFreeCommandBuffersSafe
-               :: PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
-
-instance VulkanProc "vkFreeCommandBuffers" where
-        type VkProcType "vkFreeCommandBuffers" = HS_vkFreeCommandBuffers
-        vkProcSymbol = _VkFreeCommandBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFreeCommandBuffers
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkFreeCommandBuffersSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBeginCommandBuffer :: CString
-
-pattern VkBeginCommandBuffer <- (is_VkBeginCommandBuffer -> True)
-  where VkBeginCommandBuffer = _VkBeginCommandBuffer
-
-{-# INLINE _VkBeginCommandBuffer #-}
-
-_VkBeginCommandBuffer :: CString
-_VkBeginCommandBuffer = Ptr "vkBeginCommandBuffer\NUL"##
-
-{-# INLINE is_VkBeginCommandBuffer #-}
-
-is_VkBeginCommandBuffer :: CString -> Bool
-is_VkBeginCommandBuffer
-  = (EQ ==) . cmpCStrings _VkBeginCommandBuffer
-
-type VkBeginCommandBuffer = "vkBeginCommandBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkBeginCommandBuffer"
-               vkBeginCommandBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
-##else
-vkBeginCommandBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                     -> IO VkResult
-vkBeginCommandBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkBeginCommandBuffer)
-
-{-# NOINLINE vkBeginCommandBuffer #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkBeginCommandBuffer"
-               vkBeginCommandBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
-##else
-vkBeginCommandBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                         -> IO VkResult
-vkBeginCommandBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBeginCommandBuffer)
-
-{-# NOINLINE vkBeginCommandBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBeginCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkCommandBufferBeginInfo* pBeginInfo
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
-type HS_vkBeginCommandBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                     -> IO VkResult
-
-type PFN_vkBeginCommandBuffer = FunPtr HS_vkBeginCommandBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkBeginCommandBuffer ::
-               PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
-
-foreign import ccall safe "dynamic" unwrapVkBeginCommandBufferSafe
-               :: PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
-
-instance VulkanProc "vkBeginCommandBuffer" where
-        type VkProcType "vkBeginCommandBuffer" = HS_vkBeginCommandBuffer
-        vkProcSymbol = _VkBeginCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBeginCommandBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkBeginCommandBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEndCommandBuffer :: CString
-
-pattern VkEndCommandBuffer <- (is_VkEndCommandBuffer -> True)
-  where VkEndCommandBuffer = _VkEndCommandBuffer
-
-{-# INLINE _VkEndCommandBuffer #-}
-
-_VkEndCommandBuffer :: CString
-_VkEndCommandBuffer = Ptr "vkEndCommandBuffer\NUL"##
-
-{-# INLINE is_VkEndCommandBuffer #-}
-
-is_VkEndCommandBuffer :: CString -> Bool
-is_VkEndCommandBuffer = (EQ ==) . cmpCStrings _VkEndCommandBuffer
-
-type VkEndCommandBuffer = "vkEndCommandBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEndCommandBuffer" vkEndCommandBuffer
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> IO VkResult
-
-##else
-vkEndCommandBuffer :: VkCommandBuffer -- ^ commandBuffer
-                                      -> IO VkResult
-vkEndCommandBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkEndCommandBuffer)
-
-{-# NOINLINE vkEndCommandBuffer #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEndCommandBuffer"
-               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> IO VkResult
-
-##else
-vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> IO VkResult
-vkEndCommandBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkEndCommandBuffer)
-
-{-# NOINLINE vkEndCommandBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEndCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
-type HS_vkEndCommandBuffer = VkCommandBuffer -- ^ commandBuffer
-                                             -> IO VkResult
-
-type PFN_vkEndCommandBuffer = FunPtr HS_vkEndCommandBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkEndCommandBuffer ::
-               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
-
-foreign import ccall safe "dynamic" unwrapVkEndCommandBufferSafe ::
-               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
-
-instance VulkanProc "vkEndCommandBuffer" where
-        type VkProcType "vkEndCommandBuffer" = HS_vkEndCommandBuffer
-        vkProcSymbol = _VkEndCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEndCommandBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkEndCommandBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetCommandBuffer :: CString
-
-pattern VkResetCommandBuffer <- (is_VkResetCommandBuffer -> True)
-  where VkResetCommandBuffer = _VkResetCommandBuffer
-
-{-# INLINE _VkResetCommandBuffer #-}
-
-_VkResetCommandBuffer :: CString
-_VkResetCommandBuffer = Ptr "vkResetCommandBuffer\NUL"##
-
-{-# INLINE is_VkResetCommandBuffer #-}
-
-is_VkResetCommandBuffer :: CString -> Bool
-is_VkResetCommandBuffer
-  = (EQ ==) . cmpCStrings _VkResetCommandBuffer
-
-type VkResetCommandBuffer = "vkResetCommandBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetCommandBuffer"
-               vkResetCommandBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
-##else
-vkResetCommandBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkCommandBufferResetFlags -- ^ flags
-                                                                  -> IO VkResult
-vkResetCommandBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkResetCommandBuffer)
-
-{-# NOINLINE vkResetCommandBuffer #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetCommandBuffer"
-               vkResetCommandBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
-##else
-vkResetCommandBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkCommandBufferResetFlags -- ^ flags
-                                                                      -> IO VkResult
-vkResetCommandBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandBuffer)
-
-{-# NOINLINE vkResetCommandBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkCommandBufferResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
-type HS_vkResetCommandBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkCommandBufferResetFlags -- ^ flags
-                                                  -> IO VkResult
-
-type PFN_vkResetCommandBuffer = FunPtr HS_vkResetCommandBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkResetCommandBuffer ::
-               PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
-
-foreign import ccall safe "dynamic" unwrapVkResetCommandBufferSafe
-               :: PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
-
-instance VulkanProc "vkResetCommandBuffer" where
-        type VkProcType "vkResetCommandBuffer" = HS_vkResetCommandBuffer
-        vkProcSymbol = _VkResetCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetCommandBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkResetCommandBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindPipeline :: CString
-
-pattern VkCmdBindPipeline <- (is_VkCmdBindPipeline -> True)
-  where VkCmdBindPipeline = _VkCmdBindPipeline
-
-{-# INLINE _VkCmdBindPipeline #-}
-
-_VkCmdBindPipeline :: CString
-_VkCmdBindPipeline = Ptr "vkCmdBindPipeline\NUL"##
-
-{-# INLINE is_VkCmdBindPipeline #-}
-
-is_VkCmdBindPipeline :: CString -> Bool
-is_VkCmdBindPipeline = (EQ ==) . cmpCStrings _VkCmdBindPipeline
-
-type VkCmdBindPipeline = "vkCmdBindPipeline"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindPipeline" vkCmdBindPipeline
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-
-##else
-vkCmdBindPipeline ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-vkCmdBindPipeline
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindPipeline)
-
-{-# NOINLINE vkCmdBindPipeline #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-
-##else
-vkCmdBindPipelineSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                             -> VkPipeline -- ^ pipeline
-                                                                           -> IO ()
-vkCmdBindPipelineSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindPipeline)
-
-{-# NOINLINE vkCmdBindPipelineSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindPipeline
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipeline pipeline
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
-type HS_vkCmdBindPipeline =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                            -> VkPipeline -- ^ pipeline
-                                                          -> IO ()
-
-type PFN_vkCmdBindPipeline = FunPtr HS_vkCmdBindPipeline
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBindPipeline ::
-               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
-
-foreign import ccall safe "dynamic" unwrapVkCmdBindPipelineSafe ::
-               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
-
-instance VulkanProc "vkCmdBindPipeline" where
-        type VkProcType "vkCmdBindPipeline" = HS_vkCmdBindPipeline
-        vkProcSymbol = _VkCmdBindPipeline
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindPipeline
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindPipelineSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetViewport :: CString
-
-pattern VkCmdSetViewport <- (is_VkCmdSetViewport -> True)
-  where VkCmdSetViewport = _VkCmdSetViewport
-
-{-# INLINE _VkCmdSetViewport #-}
-
-_VkCmdSetViewport :: CString
-_VkCmdSetViewport = Ptr "vkCmdSetViewport\NUL"##
-
-{-# INLINE is_VkCmdSetViewport #-}
-
-is_VkCmdSetViewport :: CString -> Bool
-is_VkCmdSetViewport = (EQ ==) . cmpCStrings _VkCmdSetViewport
-
-type VkCmdSetViewport = "vkCmdSetViewport"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetViewport" vkCmdSetViewport ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstViewport
-                                         -> Word32 -- ^ viewportCount
-                                                   -> Ptr VkViewport -- ^ pViewports
-                                                                     -> IO ()
-
-##else
-vkCmdSetViewport ::
-                 VkCommandBuffer -- ^ commandBuffer
-                                 -> Word32 -- ^ firstViewport
-                                           -> Word32 -- ^ viewportCount
-                                                     -> Ptr VkViewport -- ^ pViewports
-                                                                       -> IO ()
-vkCmdSetViewport
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetViewport)
-
-{-# NOINLINE vkCmdSetViewport #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ firstViewport
-                                            -> Word32 -- ^ viewportCount
-                                                      -> Ptr VkViewport -- ^ pViewports
-                                                                        -> IO ()
-
-##else
-vkCmdSetViewportSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Word32 -- ^ firstViewport
-                                               -> Word32 -- ^ viewportCount
-                                                         -> Ptr VkViewport -- ^ pViewports
-                                                                           -> IO ()
-vkCmdSetViewportSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetViewport)
-
-{-# NOINLINE vkCmdSetViewportSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetViewport
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstViewport
---   >     , uint32_t viewportCount
---   >     , const VkViewport* pViewports
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
-type HS_vkCmdSetViewport =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ firstViewport
-                               -> Word32 -- ^ viewportCount
-                                         -> Ptr VkViewport -- ^ pViewports
-                                                           -> IO ()
-
-type PFN_vkCmdSetViewport = FunPtr HS_vkCmdSetViewport
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetViewport ::
-               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetViewportSafe ::
-               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
-
-instance VulkanProc "vkCmdSetViewport" where
-        type VkProcType "vkCmdSetViewport" = HS_vkCmdSetViewport
-        vkProcSymbol = _VkCmdSetViewport
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetViewport
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetViewportSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetScissor :: CString
-
-pattern VkCmdSetScissor <- (is_VkCmdSetScissor -> True)
-  where VkCmdSetScissor = _VkCmdSetScissor
-
-{-# INLINE _VkCmdSetScissor #-}
-
-_VkCmdSetScissor :: CString
-_VkCmdSetScissor = Ptr "vkCmdSetScissor\NUL"##
-
-{-# INLINE is_VkCmdSetScissor #-}
-
-is_VkCmdSetScissor :: CString -> Bool
-is_VkCmdSetScissor = (EQ ==) . cmpCStrings _VkCmdSetScissor
-
-type VkCmdSetScissor = "vkCmdSetScissor"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissor ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstScissor
-                                         -> Word32 -- ^ scissorCount
-                                                   -> Ptr VkRect2D -- ^ pScissors
-                                                                   -> IO ()
-
-##else
-vkCmdSetScissor ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> Word32 -- ^ firstScissor
-                                          -> Word32 -- ^ scissorCount
-                                                    -> Ptr VkRect2D -- ^ pScissors
-                                                                    -> IO ()
-vkCmdSetScissor
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetScissor)
-
-{-# NOINLINE vkCmdSetScissor #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstScissor
-                                         -> Word32 -- ^ scissorCount
-                                                   -> Ptr VkRect2D -- ^ pScissors
-                                                                   -> IO ()
-
-##else
-vkCmdSetScissorSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> Word32 -- ^ firstScissor
-                                              -> Word32 -- ^ scissorCount
-                                                        -> Ptr VkRect2D -- ^ pScissors
-                                                                        -> IO ()
-vkCmdSetScissorSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetScissor)
-
-{-# NOINLINE vkCmdSetScissorSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetScissor
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstScissor
---   >     , uint32_t scissorCount
---   >     , const VkRect2D* pScissors
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
-type HS_vkCmdSetScissor =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ firstScissor
-                               -> Word32 -- ^ scissorCount
-                                         -> Ptr VkRect2D -- ^ pScissors
-                                                         -> IO ()
-
-type PFN_vkCmdSetScissor = FunPtr HS_vkCmdSetScissor
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetScissor ::
-               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetScissorSafe ::
-               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
-
-instance VulkanProc "vkCmdSetScissor" where
-        type VkProcType "vkCmdSetScissor" = HS_vkCmdSetScissor
-        vkProcSymbol = _VkCmdSetScissor
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetScissor
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetScissorSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetLineWidth :: CString
-
-pattern VkCmdSetLineWidth <- (is_VkCmdSetLineWidth -> True)
-  where VkCmdSetLineWidth = _VkCmdSetLineWidth
-
-{-# INLINE _VkCmdSetLineWidth #-}
-
-_VkCmdSetLineWidth :: CString
-_VkCmdSetLineWidth = Ptr "vkCmdSetLineWidth\NUL"##
-
-{-# INLINE is_VkCmdSetLineWidth #-}
-
-is_VkCmdSetLineWidth :: CString -> Bool
-is_VkCmdSetLineWidth = (EQ ==) . cmpCStrings _VkCmdSetLineWidth
-
-type VkCmdSetLineWidth = "vkCmdSetLineWidth"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetLineWidth" vkCmdSetLineWidth
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-
-##else
-vkCmdSetLineWidth ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-vkCmdSetLineWidth
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetLineWidth)
-
-{-# NOINLINE vkCmdSetLineWidth #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-
-##else
-vkCmdSetLineWidthSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> #{type float} -> IO ()
-vkCmdSetLineWidthSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetLineWidth)
-
-{-# NOINLINE vkCmdSetLineWidthSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetLineWidth
---   >     ( VkCommandBuffer commandBuffer
---   >     , float lineWidth
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
-type HS_vkCmdSetLineWidth =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> #{type float} -> IO ()
-
-type PFN_vkCmdSetLineWidth = FunPtr HS_vkCmdSetLineWidth
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetLineWidth ::
-               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetLineWidthSafe ::
-               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
-
-instance VulkanProc "vkCmdSetLineWidth" where
-        type VkProcType "vkCmdSetLineWidth" = HS_vkCmdSetLineWidth
-        vkProcSymbol = _VkCmdSetLineWidth
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetLineWidth
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetLineWidthSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetDepthBias :: CString
-
-pattern VkCmdSetDepthBias <- (is_VkCmdSetDepthBias -> True)
-  where VkCmdSetDepthBias = _VkCmdSetDepthBias
-
-{-# INLINE _VkCmdSetDepthBias #-}
-
-_VkCmdSetDepthBias :: CString
-_VkCmdSetDepthBias = Ptr "vkCmdSetDepthBias\NUL"##
-
-{-# INLINE is_VkCmdSetDepthBias #-}
-
-is_VkCmdSetDepthBias :: CString -> Bool
-is_VkCmdSetDepthBias = (EQ ==) . cmpCStrings _VkCmdSetDepthBias
-
-type VkCmdSetDepthBias = "vkCmdSetDepthBias"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetDepthBias" vkCmdSetDepthBias
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBias ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    #{type float} ->
-                      #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBias
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDepthBias)
-
-{-# NOINLINE vkCmdSetDepthBias #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBiasSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        #{type float} ->
-                          #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBiasSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBias)
-
-{-# NOINLINE vkCmdSetDepthBiasSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDepthBias
---   >     ( VkCommandBuffer commandBuffer
---   >     , float depthBiasConstantFactor
---   >     , float depthBiasClamp
---   >     , float depthBiasSlopeFactor
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
-type HS_vkCmdSetDepthBias =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       #{type float} ->
-         #{type float} -> #{type float} -> IO ()
-
-type PFN_vkCmdSetDepthBias = FunPtr HS_vkCmdSetDepthBias
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBias ::
-               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBiasSafe ::
-               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
-
-instance VulkanProc "vkCmdSetDepthBias" where
-        type VkProcType "vkCmdSetDepthBias" = HS_vkCmdSetDepthBias
-        vkProcSymbol = _VkCmdSetDepthBias
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDepthBias
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBiasSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetBlendConstants :: CString
-
-pattern VkCmdSetBlendConstants <-
-        (is_VkCmdSetBlendConstants -> True)
-  where VkCmdSetBlendConstants = _VkCmdSetBlendConstants
-
-{-# INLINE _VkCmdSetBlendConstants #-}
-
-_VkCmdSetBlendConstants :: CString
-_VkCmdSetBlendConstants = Ptr "vkCmdSetBlendConstants\NUL"##
-
-{-# INLINE is_VkCmdSetBlendConstants #-}
-
-is_VkCmdSetBlendConstants :: CString -> Bool
-is_VkCmdSetBlendConstants
-  = (EQ ==) . cmpCStrings _VkCmdSetBlendConstants
-
-type VkCmdSetBlendConstants = "vkCmdSetBlendConstants"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstants ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
-##else
-vkCmdSetBlendConstants ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       -> Ptr #{type float} -- ^ blendConstants
-                                                                        -> IO ()
-vkCmdSetBlendConstants
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetBlendConstants)
-
-{-# NOINLINE vkCmdSetBlendConstants #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstantsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
-##else
-vkCmdSetBlendConstantsSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> Ptr #{type float} -- ^ blendConstants
-                                                                            -> IO ()
-vkCmdSetBlendConstantsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetBlendConstants)
-
-{-# NOINLINE vkCmdSetBlendConstantsSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetBlendConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , const float blendConstants[4]
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
-type HS_vkCmdSetBlendConstants =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Ptr #{type float} -- ^ blendConstants
-                                                      -> IO ()
-
-type PFN_vkCmdSetBlendConstants = FunPtr HS_vkCmdSetBlendConstants
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetBlendConstants
-               :: PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetBlendConstantsSafe ::
-               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
-
-instance VulkanProc "vkCmdSetBlendConstants" where
-        type VkProcType "vkCmdSetBlendConstants" =
-             HS_vkCmdSetBlendConstants
-        vkProcSymbol = _VkCmdSetBlendConstants
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetBlendConstants
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetBlendConstantsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetDepthBounds :: CString
-
-pattern VkCmdSetDepthBounds <- (is_VkCmdSetDepthBounds -> True)
-  where VkCmdSetDepthBounds = _VkCmdSetDepthBounds
-
-{-# INLINE _VkCmdSetDepthBounds #-}
-
-_VkCmdSetDepthBounds :: CString
-_VkCmdSetDepthBounds = Ptr "vkCmdSetDepthBounds\NUL"##
-
-{-# INLINE is_VkCmdSetDepthBounds #-}
-
-is_VkCmdSetDepthBounds :: CString -> Bool
-is_VkCmdSetDepthBounds = (EQ ==) . cmpCStrings _VkCmdSetDepthBounds
-
-type VkCmdSetDepthBounds = "vkCmdSetDepthBounds"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBounds ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBounds ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBounds
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDepthBounds)
-
-{-# NOINLINE vkCmdSetDepthBounds #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBoundsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBoundsSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBoundsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBounds)
-
-{-# NOINLINE vkCmdSetDepthBoundsSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDepthBounds
---   >     ( VkCommandBuffer commandBuffer
---   >     , float minDepthBounds
---   >     , float maxDepthBounds
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
-type HS_vkCmdSetDepthBounds =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       #{type float} -> #{type float} -> IO ()
-
-type PFN_vkCmdSetDepthBounds = FunPtr HS_vkCmdSetDepthBounds
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBounds ::
-               PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBoundsSafe
-               :: PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
-
-instance VulkanProc "vkCmdSetDepthBounds" where
-        type VkProcType "vkCmdSetDepthBounds" = HS_vkCmdSetDepthBounds
-        vkProcSymbol = _VkCmdSetDepthBounds
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDepthBounds
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBoundsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetStencilCompareMask :: CString
-
-pattern VkCmdSetStencilCompareMask <-
-        (is_VkCmdSetStencilCompareMask -> True)
-  where VkCmdSetStencilCompareMask = _VkCmdSetStencilCompareMask
-
-{-# INLINE _VkCmdSetStencilCompareMask #-}
-
-_VkCmdSetStencilCompareMask :: CString
-_VkCmdSetStencilCompareMask = Ptr "vkCmdSetStencilCompareMask\NUL"##
-
-{-# INLINE is_VkCmdSetStencilCompareMask #-}
-
-is_VkCmdSetStencilCompareMask :: CString -> Bool
-is_VkCmdSetStencilCompareMask
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilCompareMask
-
-type VkCmdSetStencilCompareMask = "vkCmdSetStencilCompareMask"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMask ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilCompareMask ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> VkStencilFaceFlags -- ^ faceMask
-                                                                 -> Word32 -- ^ compareMask
-                                                                           -> IO ()
-vkCmdSetStencilCompareMask
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilCompareMask)
-
-{-# NOINLINE vkCmdSetStencilCompareMask #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMaskSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilCompareMaskSafe ::
-                               VkCommandBuffer -- ^ commandBuffer
-                                               -> VkStencilFaceFlags -- ^ faceMask
-                                                                     -> Word32 -- ^ compareMask
-                                                                               -> IO ()
-vkCmdSetStencilCompareMaskSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCmdSetStencilCompareMask)
-
-{-# NOINLINE vkCmdSetStencilCompareMaskSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilCompareMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t compareMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
-type HS_vkCmdSetStencilCompareMask =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ compareMask
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilCompareMask =
-     FunPtr HS_vkCmdSetStencilCompareMask
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetStencilCompareMask ::
-               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetStencilCompareMaskSafe ::
-               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
-
-instance VulkanProc "vkCmdSetStencilCompareMask" where
-        type VkProcType "vkCmdSetStencilCompareMask" =
-             HS_vkCmdSetStencilCompareMask
-        vkProcSymbol = _VkCmdSetStencilCompareMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetStencilCompareMask
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilCompareMaskSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetStencilWriteMask :: CString
-
-pattern VkCmdSetStencilWriteMask <-
-        (is_VkCmdSetStencilWriteMask -> True)
-  where VkCmdSetStencilWriteMask = _VkCmdSetStencilWriteMask
-
-{-# INLINE _VkCmdSetStencilWriteMask #-}
-
-_VkCmdSetStencilWriteMask :: CString
-_VkCmdSetStencilWriteMask = Ptr "vkCmdSetStencilWriteMask\NUL"##
-
-{-# INLINE is_VkCmdSetStencilWriteMask #-}
-
-is_VkCmdSetStencilWriteMask :: CString -> Bool
-is_VkCmdSetStencilWriteMask
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilWriteMask
-
-type VkCmdSetStencilWriteMask = "vkCmdSetStencilWriteMask"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMask ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilWriteMask ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkStencilFaceFlags -- ^ faceMask
-                                                               -> Word32 -- ^ writeMask
-                                                                         -> IO ()
-vkCmdSetStencilWriteMask
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilWriteMask)
-
-{-# NOINLINE vkCmdSetStencilWriteMask #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMaskSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilWriteMaskSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> VkStencilFaceFlags -- ^ faceMask
-                                                                   -> Word32 -- ^ writeMask
-                                                                             -> IO ()
-vkCmdSetStencilWriteMaskSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilWriteMask)
-
-{-# NOINLINE vkCmdSetStencilWriteMaskSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilWriteMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t writeMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
-type HS_vkCmdSetStencilWriteMask =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ writeMask
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilWriteMask =
-     FunPtr HS_vkCmdSetStencilWriteMask
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetStencilWriteMask ::
-               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetStencilWriteMaskSafe ::
-               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
-
-instance VulkanProc "vkCmdSetStencilWriteMask" where
-        type VkProcType "vkCmdSetStencilWriteMask" =
-             HS_vkCmdSetStencilWriteMask
-        vkProcSymbol = _VkCmdSetStencilWriteMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetStencilWriteMask
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilWriteMaskSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetStencilReference :: CString
-
-pattern VkCmdSetStencilReference <-
-        (is_VkCmdSetStencilReference -> True)
-  where VkCmdSetStencilReference = _VkCmdSetStencilReference
-
-{-# INLINE _VkCmdSetStencilReference #-}
-
-_VkCmdSetStencilReference :: CString
-_VkCmdSetStencilReference = Ptr "vkCmdSetStencilReference\NUL"##
-
-{-# INLINE is_VkCmdSetStencilReference #-}
-
-is_VkCmdSetStencilReference :: CString -> Bool
-is_VkCmdSetStencilReference
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilReference
-
-type VkCmdSetStencilReference = "vkCmdSetStencilReference"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetStencilReference"
-               vkCmdSetStencilReference ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilReference ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkStencilFaceFlags -- ^ faceMask
-                                                               -> Word32 -- ^ reference
-                                                                         -> IO ()
-vkCmdSetStencilReference
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilReference)
-
-{-# NOINLINE vkCmdSetStencilReference #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetStencilReference"
-               vkCmdSetStencilReferenceSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilReferenceSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> VkStencilFaceFlags -- ^ faceMask
-                                                                   -> Word32 -- ^ reference
-                                                                             -> IO ()
-vkCmdSetStencilReferenceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilReference)
-
-{-# NOINLINE vkCmdSetStencilReferenceSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilReference
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t reference
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
-type HS_vkCmdSetStencilReference =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ reference
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilReference =
-     FunPtr HS_vkCmdSetStencilReference
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetStencilReference ::
-               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetStencilReferenceSafe ::
-               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
-
-instance VulkanProc "vkCmdSetStencilReference" where
-        type VkProcType "vkCmdSetStencilReference" =
-             HS_vkCmdSetStencilReference
-        vkProcSymbol = _VkCmdSetStencilReference
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetStencilReference
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilReferenceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindDescriptorSets :: CString
-
-pattern VkCmdBindDescriptorSets <-
-        (is_VkCmdBindDescriptorSets -> True)
-  where VkCmdBindDescriptorSets = _VkCmdBindDescriptorSets
-
-{-# INLINE _VkCmdBindDescriptorSets #-}
-
-_VkCmdBindDescriptorSets :: CString
-_VkCmdBindDescriptorSets = Ptr "vkCmdBindDescriptorSets\NUL"##
-
-{-# INLINE is_VkCmdBindDescriptorSets #-}
-
-is_VkCmdBindDescriptorSets :: CString -> Bool
-is_VkCmdBindDescriptorSets
-  = (EQ ==) . cmpCStrings _VkCmdBindDescriptorSets
-
-type VkCmdBindDescriptorSets = "vkCmdBindDescriptorSets"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSets ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
-##else
-vkCmdBindDescriptorSets ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkPipelineBindPoint -- ^ pipelineBindPoint
-                                              ->
-                            VkPipelineLayout -- ^ layout
-                                             ->
-                              Word32 -- ^ firstSet
-                                     ->
-                                Word32 -- ^ descriptorSetCount
-                                       -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                              -> Word32 -- ^ dynamicOffsetCount
-                                                                        -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                      -> IO ()
-vkCmdBindDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindDescriptorSets)
-
-{-# NOINLINE vkCmdBindDescriptorSets #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSetsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
-##else
-vkCmdBindDescriptorSetsSafe ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                  ->
-                                VkPipelineLayout -- ^ layout
-                                                 ->
-                                  Word32 -- ^ firstSet
-                                         ->
-                                    Word32 -- ^ descriptorSetCount
-                                           -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                  -> Word32 -- ^ dynamicOffsetCount
-                                                                            -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                          -> IO ()
-vkCmdBindDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindDescriptorSets)
-
-{-# NOINLINE vkCmdBindDescriptorSetsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindDescriptorSets
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipelineLayout layout
---   >     , uint32_t firstSet
---   >     , uint32_t descriptorSetCount
---   >     , const VkDescriptorSet* pDescriptorSets
---   >     , uint32_t dynamicOffsetCount
---   >     , const uint32_t* pDynamicOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
-type HS_vkCmdBindDescriptorSets =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineBindPoint -- ^ pipelineBindPoint
-                           ->
-         VkPipelineLayout -- ^ layout
-                          ->
-           Word32 -- ^ firstSet
-                  ->
-             Word32 -- ^ descriptorSetCount
-                    -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                           -> Word32 -- ^ dynamicOffsetCount
-                                                     -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                   -> IO ()
-
-type PFN_vkCmdBindDescriptorSets =
-     FunPtr HS_vkCmdBindDescriptorSets
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBindDescriptorSets
-               :: PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdBindDescriptorSetsSafe ::
-               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
-
-instance VulkanProc "vkCmdBindDescriptorSets" where
-        type VkProcType "vkCmdBindDescriptorSets" =
-             HS_vkCmdBindDescriptorSets
-        vkProcSymbol = _VkCmdBindDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindIndexBuffer :: CString
-
-pattern VkCmdBindIndexBuffer <- (is_VkCmdBindIndexBuffer -> True)
-  where VkCmdBindIndexBuffer = _VkCmdBindIndexBuffer
-
-{-# INLINE _VkCmdBindIndexBuffer #-}
-
-_VkCmdBindIndexBuffer :: CString
-_VkCmdBindIndexBuffer = Ptr "vkCmdBindIndexBuffer\NUL"##
-
-{-# INLINE is_VkCmdBindIndexBuffer #-}
-
-is_VkCmdBindIndexBuffer :: CString -> Bool
-is_VkCmdBindIndexBuffer
-  = (EQ ==) . cmpCStrings _VkCmdBindIndexBuffer
-
-type VkCmdBindIndexBuffer = "vkCmdBindIndexBuffer"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
-##else
-vkCmdBindIndexBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkBuffer -- ^ buffer
-                                                 -> VkDeviceSize -- ^ offset
-                                                                 -> VkIndexType -- ^ indexType
-                                                                                -> IO ()
-vkCmdBindIndexBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindIndexBuffer)
-
-{-# NOINLINE vkCmdBindIndexBuffer #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
-##else
-vkCmdBindIndexBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkBuffer -- ^ buffer
-                                                     -> VkDeviceSize -- ^ offset
-                                                                     -> VkIndexType -- ^ indexType
-                                                                                    -> IO ()
-vkCmdBindIndexBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindIndexBuffer)
-
-{-# NOINLINE vkCmdBindIndexBufferSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindIndexBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , VkIndexType indexType
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
-type HS_vkCmdBindIndexBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> VkIndexType -- ^ indexType
-                                                                -> IO ()
-
-type PFN_vkCmdBindIndexBuffer = FunPtr HS_vkCmdBindIndexBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBindIndexBuffer ::
-               PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdBindIndexBufferSafe
-               :: PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
-
-instance VulkanProc "vkCmdBindIndexBuffer" where
-        type VkProcType "vkCmdBindIndexBuffer" = HS_vkCmdBindIndexBuffer
-        vkProcSymbol = _VkCmdBindIndexBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindIndexBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindIndexBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindVertexBuffers :: CString
-
-pattern VkCmdBindVertexBuffers <-
-        (is_VkCmdBindVertexBuffers -> True)
-  where VkCmdBindVertexBuffers = _VkCmdBindVertexBuffers
-
-{-# INLINE _VkCmdBindVertexBuffers #-}
-
-_VkCmdBindVertexBuffers :: CString
-_VkCmdBindVertexBuffers = Ptr "vkCmdBindVertexBuffers\NUL"##
-
-{-# INLINE is_VkCmdBindVertexBuffers #-}
-
-is_VkCmdBindVertexBuffers :: CString -> Bool
-is_VkCmdBindVertexBuffers
-  = (EQ ==) . cmpCStrings _VkCmdBindVertexBuffers
-
-type VkCmdBindVertexBuffers = "vkCmdBindVertexBuffers"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffers ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
-##else
-vkCmdBindVertexBuffers ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         Word32 -- ^ firstBinding
-                                -> Word32 -- ^ bindingCount
-                                          -> Ptr VkBuffer -- ^ pBuffers
-                                                          -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                              -> IO ()
-vkCmdBindVertexBuffers
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindVertexBuffers)
-
-{-# NOINLINE vkCmdBindVertexBuffers #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffersSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
-##else
-vkCmdBindVertexBuffersSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             Word32 -- ^ firstBinding
-                                    -> Word32 -- ^ bindingCount
-                                              -> Ptr VkBuffer -- ^ pBuffers
-                                                              -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                                  -> IO ()
-vkCmdBindVertexBuffersSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindVertexBuffers)
-
-{-# NOINLINE vkCmdBindVertexBuffersSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindVertexBuffers
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstBinding
---   >     , uint32_t bindingCount
---   >     , const VkBuffer* pBuffers
---   >     , const VkDeviceSize* pOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
-type HS_vkCmdBindVertexBuffers =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ firstBinding
-              -> Word32 -- ^ bindingCount
-                        -> Ptr VkBuffer -- ^ pBuffers
-                                        -> Ptr VkDeviceSize -- ^ pOffsets
-                                                            -> IO ()
-
-type PFN_vkCmdBindVertexBuffers = FunPtr HS_vkCmdBindVertexBuffers
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBindVertexBuffers
-               :: PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdBindVertexBuffersSafe ::
-               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
-
-instance VulkanProc "vkCmdBindVertexBuffers" where
-        type VkProcType "vkCmdBindVertexBuffers" =
-             HS_vkCmdBindVertexBuffers
-        vkProcSymbol = _VkCmdBindVertexBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindVertexBuffers
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindVertexBuffersSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDraw :: CString
-
-pattern VkCmdDraw <- (is_VkCmdDraw -> True)
-  where VkCmdDraw = _VkCmdDraw
-
-{-# INLINE _VkCmdDraw #-}
-
-_VkCmdDraw :: CString
-_VkCmdDraw = Ptr "vkCmdDraw\NUL"##
-
-{-# INLINE is_VkCmdDraw #-}
-
-is_VkCmdDraw :: CString -> Bool
-is_VkCmdDraw = (EQ ==) . cmpCStrings _VkCmdDraw
-
-type VkCmdDraw = "vkCmdDraw"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDraw" vkCmdDraw ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
-##else
-vkCmdDraw ::
-          VkCommandBuffer -- ^ commandBuffer
-                          -> Word32 -- ^ vertexCount
-                                    -> Word32 -- ^ instanceCount
-                                              -> Word32 -- ^ firstVertex
-                                                        -> Word32 -- ^ firstInstance
-                                                                  -> IO ()
-vkCmdDraw = unsafeDupablePerformIO (vkGetProc @VkCmdDraw)
-
-{-# NOINLINE vkCmdDraw #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
-##else
-vkCmdDrawSafe ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> Word32 -- ^ vertexCount
-                                        -> Word32 -- ^ instanceCount
-                                                  -> Word32 -- ^ firstVertex
-                                                            -> Word32 -- ^ firstInstance
-                                                                      -> IO ()
-vkCmdDrawSafe = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDraw)
-
-{-# NOINLINE vkCmdDrawSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDraw
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t vertexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstVertex
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
-type HS_vkCmdDraw =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ vertexCount
-                               -> Word32 -- ^ instanceCount
-                                         -> Word32 -- ^ firstVertex
-                                                   -> Word32 -- ^ firstInstance
-                                                             -> IO ()
-
-type PFN_vkCmdDraw = FunPtr HS_vkCmdDraw
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDraw ::
-               PFN_vkCmdDraw -> HS_vkCmdDraw
-
-foreign import ccall safe "dynamic" unwrapVkCmdDrawSafe ::
-               PFN_vkCmdDraw -> HS_vkCmdDraw
-
-instance VulkanProc "vkCmdDraw" where
-        type VkProcType "vkCmdDraw" = HS_vkCmdDraw
-        vkProcSymbol = _VkCmdDraw
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDraw
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDrawIndexed :: CString
-
-pattern VkCmdDrawIndexed <- (is_VkCmdDrawIndexed -> True)
-  where VkCmdDrawIndexed = _VkCmdDrawIndexed
-
-{-# INLINE _VkCmdDrawIndexed #-}
-
-_VkCmdDrawIndexed :: CString
-_VkCmdDrawIndexed = Ptr "vkCmdDrawIndexed\NUL"##
-
-{-# INLINE is_VkCmdDrawIndexed #-}
-
-is_VkCmdDrawIndexed :: CString -> Bool
-is_VkCmdDrawIndexed = (EQ ==) . cmpCStrings _VkCmdDrawIndexed
-
-type VkCmdDrawIndexed = "vkCmdDrawIndexed"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDrawIndexed" vkCmdDrawIndexed ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
-##else
-vkCmdDrawIndexed ::
-                 VkCommandBuffer -- ^ commandBuffer
-                                 ->
-                   Word32 -- ^ indexCount
-                          -> Word32 -- ^ instanceCount
-                                    -> Word32 -- ^ firstIndex
-                                              -> Int32 -- ^ vertexOffset
-                                                       -> Word32 -- ^ firstInstance
-                                                                 -> IO ()
-vkCmdDrawIndexed
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndexed)
-
-{-# NOINLINE vkCmdDrawIndexed #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
-##else
-vkCmdDrawIndexedSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       Word32 -- ^ indexCount
-                              -> Word32 -- ^ instanceCount
-                                        -> Word32 -- ^ firstIndex
-                                                  -> Int32 -- ^ vertexOffset
-                                                           -> Word32 -- ^ firstInstance
-                                                                     -> IO ()
-vkCmdDrawIndexedSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexed)
-
-{-# NOINLINE vkCmdDrawIndexedSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndexed
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t indexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstIndex
---   >     , int32_t vertexOffset
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
-type HS_vkCmdDrawIndexed =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ indexCount
-              -> Word32 -- ^ instanceCount
-                        -> Word32 -- ^ firstIndex
-                                  -> Int32 -- ^ vertexOffset
-                                           -> Word32 -- ^ firstInstance
-                                                     -> IO ()
-
-type PFN_vkCmdDrawIndexed = FunPtr HS_vkCmdDrawIndexed
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndexed ::
-               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
-
-foreign import ccall safe "dynamic" unwrapVkCmdDrawIndexedSafe ::
-               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
-
-instance VulkanProc "vkCmdDrawIndexed" where
-        type VkProcType "vkCmdDrawIndexed" = HS_vkCmdDrawIndexed
-        vkProcSymbol = _VkCmdDrawIndexed
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndexed
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDrawIndirect :: CString
-
-pattern VkCmdDrawIndirect <- (is_VkCmdDrawIndirect -> True)
-  where VkCmdDrawIndirect = _VkCmdDrawIndirect
-
-{-# INLINE _VkCmdDrawIndirect #-}
-
-_VkCmdDrawIndirect :: CString
-_VkCmdDrawIndirect = Ptr "vkCmdDrawIndirect\NUL"##
-
-{-# INLINE is_VkCmdDrawIndirect #-}
-
-is_VkCmdDrawIndirect :: CString -> Bool
-is_VkCmdDrawIndirect = (EQ ==) . cmpCStrings _VkCmdDrawIndirect
-
-type VkCmdDrawIndirect = "vkCmdDrawIndirect"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDrawIndirect" vkCmdDrawIndirect
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndirect ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkBuffer -- ^ buffer
-                             -> VkDeviceSize -- ^ offset
-                                             -> Word32 -- ^ drawCount
-                                                       -> Word32 -- ^ stride
-                                                                 -> IO ()
-vkCmdDrawIndirect
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndirect)
-
-{-# NOINLINE vkCmdDrawIndirect #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndirectSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> Word32 -- ^ drawCount
-                                                           -> Word32 -- ^ stride
-                                                                     -> IO ()
-vkCmdDrawIndirectSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndirect)
-
-{-# NOINLINE vkCmdDrawIndirectSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
-type HS_vkCmdDrawIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceSize -- ^ offset
-                                -> Word32 -- ^ drawCount
-                                          -> Word32 -- ^ stride
-                                                    -> IO ()
-
-type PFN_vkCmdDrawIndirect = FunPtr HS_vkCmdDrawIndirect
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndirect ::
-               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
-
-foreign import ccall safe "dynamic" unwrapVkCmdDrawIndirectSafe ::
-               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
-
-instance VulkanProc "vkCmdDrawIndirect" where
-        type VkProcType "vkCmdDrawIndirect" = HS_vkCmdDrawIndirect
-        vkProcSymbol = _VkCmdDrawIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndirect
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDrawIndexedIndirect :: CString
-
-pattern VkCmdDrawIndexedIndirect <-
-        (is_VkCmdDrawIndexedIndirect -> True)
-  where VkCmdDrawIndexedIndirect = _VkCmdDrawIndexedIndirect
-
-{-# INLINE _VkCmdDrawIndexedIndirect #-}
-
-_VkCmdDrawIndexedIndirect :: CString
-_VkCmdDrawIndexedIndirect = Ptr "vkCmdDrawIndexedIndirect\NUL"##
-
-{-# INLINE is_VkCmdDrawIndexedIndirect #-}
-
-is_VkCmdDrawIndexedIndirect :: CString -> Bool
-is_VkCmdDrawIndexedIndirect
-  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirect
-
-type VkCmdDrawIndexedIndirect = "vkCmdDrawIndexedIndirect"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirect ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndexedIndirect ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkBuffer -- ^ buffer
-                                    -> VkDeviceSize -- ^ offset
-                                                    -> Word32 -- ^ drawCount
-                                                              -> Word32 -- ^ stride
-                                                                        -> IO ()
-vkCmdDrawIndexedIndirect
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndexedIndirect)
-
-{-# NOINLINE vkCmdDrawIndexedIndirect #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirectSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndexedIndirectSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             ->
-                               VkBuffer -- ^ buffer
-                                        -> VkDeviceSize -- ^ offset
-                                                        -> Word32 -- ^ drawCount
-                                                                  -> Word32 -- ^ stride
-                                                                            -> IO ()
-vkCmdDrawIndexedIndirectSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexedIndirect)
-
-{-# NOINLINE vkCmdDrawIndexedIndirectSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndexedIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
-type HS_vkCmdDrawIndexedIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceSize -- ^ offset
-                                -> Word32 -- ^ drawCount
-                                          -> Word32 -- ^ stride
-                                                    -> IO ()
-
-type PFN_vkCmdDrawIndexedIndirect =
-     FunPtr HS_vkCmdDrawIndexedIndirect
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDrawIndexedIndirect ::
-               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdDrawIndexedIndirectSafe ::
-               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
-
-instance VulkanProc "vkCmdDrawIndexedIndirect" where
-        type VkProcType "vkCmdDrawIndexedIndirect" =
-             HS_vkCmdDrawIndexedIndirect
-        vkProcSymbol = _VkCmdDrawIndexedIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndexedIndirect
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDispatch :: CString
-
-pattern VkCmdDispatch <- (is_VkCmdDispatch -> True)
-  where VkCmdDispatch = _VkCmdDispatch
-
-{-# INLINE _VkCmdDispatch #-}
-
-_VkCmdDispatch :: CString
-_VkCmdDispatch = Ptr "vkCmdDispatch\NUL"##
-
-{-# INLINE is_VkCmdDispatch #-}
-
-is_VkCmdDispatch :: CString -> Bool
-is_VkCmdDispatch = (EQ ==) . cmpCStrings _VkCmdDispatch
-
-type VkCmdDispatch = "vkCmdDispatch"
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatch ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
-##else
-vkCmdDispatch ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> Word32 -- ^ groupCountX
-                                        -> Word32 -- ^ groupCountY
-                                                  -> Word32 -- ^ groupCountZ
-                                                            -> IO ()
-vkCmdDispatch = unsafeDupablePerformIO (vkGetProc @VkCmdDispatch)
-
-{-# NOINLINE vkCmdDispatch #-}
-##endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
-##else
-vkCmdDispatchSafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ groupCountX
-                                            -> Word32 -- ^ groupCountY
-                                                      -> Word32 -- ^ groupCountZ
-                                                                -> IO ()
-vkCmdDispatchSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatch)
-
-{-# NOINLINE vkCmdDispatchSafe #-}
-##endif
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @compute@
---
---   > void vkCmdDispatch
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
-type HS_vkCmdDispatch =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ groupCountX
-                               -> Word32 -- ^ groupCountY
-                                         -> Word32 -- ^ groupCountZ
-                                                   -> IO ()
-
-type PFN_vkCmdDispatch = FunPtr HS_vkCmdDispatch
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDispatch ::
-               PFN_vkCmdDispatch -> HS_vkCmdDispatch
-
-foreign import ccall safe "dynamic" unwrapVkCmdDispatchSafe ::
-               PFN_vkCmdDispatch -> HS_vkCmdDispatch
-
-instance VulkanProc "vkCmdDispatch" where
-        type VkProcType "vkCmdDispatch" = HS_vkCmdDispatch
-        vkProcSymbol = _VkCmdDispatch
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatch
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDispatchIndirect :: CString
-
-pattern VkCmdDispatchIndirect <- (is_VkCmdDispatchIndirect -> True)
-  where VkCmdDispatchIndirect = _VkCmdDispatchIndirect
-
-{-# INLINE _VkCmdDispatchIndirect #-}
-
-_VkCmdDispatchIndirect :: CString
-_VkCmdDispatchIndirect = Ptr "vkCmdDispatchIndirect\NUL"##
-
-{-# INLINE is_VkCmdDispatchIndirect #-}
-
-is_VkCmdDispatchIndirect :: CString -> Bool
-is_VkCmdDispatchIndirect
-  = (EQ ==) . cmpCStrings _VkCmdDispatchIndirect
-
-type VkCmdDispatchIndirect = "vkCmdDispatchIndirect"
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirect ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
-##else
-vkCmdDispatchIndirect ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkBuffer -- ^ buffer
-                                                  -> VkDeviceSize -- ^ offset
-                                                                  -> IO ()
-vkCmdDispatchIndirect
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDispatchIndirect)
-
-{-# NOINLINE vkCmdDispatchIndirect #-}
-##endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirectSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
-##else
-vkCmdDispatchIndirectSafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          -> VkBuffer -- ^ buffer
-                                                      -> VkDeviceSize -- ^ offset
-                                                                      -> IO ()
-vkCmdDispatchIndirectSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchIndirect)
-
-{-# NOINLINE vkCmdDispatchIndirectSafe #-}
-##endif
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @compute@
---
---   > void vkCmdDispatchIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
-type HS_vkCmdDispatchIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> IO ()
-
-type PFN_vkCmdDispatchIndirect = FunPtr HS_vkCmdDispatchIndirect
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchIndirect
-               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
-
-foreign import ccall safe "dynamic" unwrapVkCmdDispatchIndirectSafe
-               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
-
-instance VulkanProc "vkCmdDispatchIndirect" where
-        type VkProcType "vkCmdDispatchIndirect" = HS_vkCmdDispatchIndirect
-        vkProcSymbol = _VkCmdDispatchIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatchIndirect
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchIndirectSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyBuffer :: CString
-
-pattern VkCmdCopyBuffer <- (is_VkCmdCopyBuffer -> True)
-  where VkCmdCopyBuffer = _VkCmdCopyBuffer
-
-{-# INLINE _VkCmdCopyBuffer #-}
-
-_VkCmdCopyBuffer :: CString
-_VkCmdCopyBuffer = Ptr "vkCmdCopyBuffer\NUL"##
-
-{-# INLINE is_VkCmdCopyBuffer #-}
-
-is_VkCmdCopyBuffer :: CString -> Bool
-is_VkCmdCopyBuffer = (EQ ==) . cmpCStrings _VkCmdCopyBuffer
-
-type VkCmdCopyBuffer = "vkCmdCopyBuffer"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
-##else
-vkCmdCopyBuffer ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkBuffer -- ^ srcBuffer
-                           -> VkBuffer -- ^ dstBuffer
-                                       -> Word32 -- ^ regionCount
-                                                 -> Ptr VkBufferCopy -- ^ pRegions
-                                                                     -> IO ()
-vkCmdCopyBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyBuffer)
-
-{-# NOINLINE vkCmdCopyBuffer #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
-##else
-vkCmdCopyBufferSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkBuffer -- ^ srcBuffer
-                               -> VkBuffer -- ^ dstBuffer
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkBufferCopy -- ^ pRegions
-                                                                         -> IO ()
-vkCmdCopyBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBuffer)
-
-{-# NOINLINE vkCmdCopyBufferSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
-type HS_vkCmdCopyBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ srcBuffer
-                -> VkBuffer -- ^ dstBuffer
-                            -> Word32 -- ^ regionCount
-                                      -> Ptr VkBufferCopy -- ^ pRegions
-                                                          -> IO ()
-
-type PFN_vkCmdCopyBuffer = FunPtr HS_vkCmdCopyBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBuffer ::
-               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdCopyBufferSafe ::
-               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
-
-instance VulkanProc "vkCmdCopyBuffer" where
-        type VkProcType "vkCmdCopyBuffer" = HS_vkCmdCopyBuffer
-        vkProcSymbol = _VkCmdCopyBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyImage :: CString
-
-pattern VkCmdCopyImage <- (is_VkCmdCopyImage -> True)
-  where VkCmdCopyImage = _VkCmdCopyImage
-
-{-# INLINE _VkCmdCopyImage #-}
-
-_VkCmdCopyImage :: CString
-_VkCmdCopyImage = Ptr "vkCmdCopyImage\NUL"##
-
-{-# INLINE is_VkCmdCopyImage #-}
-
-is_VkCmdCopyImage :: CString -> Bool
-is_VkCmdCopyImage = (EQ ==) . cmpCStrings _VkCmdCopyImage
-
-type VkCmdCopyImage = "vkCmdCopyImage"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
-##else
-vkCmdCopyImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-vkCmdCopyImage = unsafeDupablePerformIO (vkGetProc @VkCmdCopyImage)
-
-{-# NOINLINE vkCmdCopyImage #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
-##else
-vkCmdCopyImageSafe ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkImage -- ^ srcImage
-                             ->
-                       VkImageLayout -- ^ srcImageLayout
-                                     ->
-                         VkImage -- ^ dstImage
-                                 -> VkImageLayout -- ^ dstImageLayout
-                                                  -> Word32 -- ^ regionCount
-                                                            -> Ptr VkImageCopy -- ^ pRegions
-                                                                               -> IO ()
-vkCmdCopyImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImage)
-
-{-# NOINLINE vkCmdCopyImageSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
-type HS_vkCmdCopyImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   -> VkImageLayout -- ^ dstImageLayout
-                                    -> Word32 -- ^ regionCount
-                                              -> Ptr VkImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-type PFN_vkCmdCopyImage = FunPtr HS_vkCmdCopyImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImage ::
-               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdCopyImageSafe ::
-               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
-
-instance VulkanProc "vkCmdCopyImage" where
-        type VkProcType "vkCmdCopyImage" = HS_vkCmdCopyImage
-        vkProcSymbol = _VkCmdCopyImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBlitImage :: CString
-
-pattern VkCmdBlitImage <- (is_VkCmdBlitImage -> True)
-  where VkCmdBlitImage = _VkCmdBlitImage
-
-{-# INLINE _VkCmdBlitImage #-}
-
-_VkCmdBlitImage :: CString
-_VkCmdBlitImage = Ptr "vkCmdBlitImage\NUL"##
-
-{-# INLINE is_VkCmdBlitImage #-}
-
-is_VkCmdBlitImage :: CString -> Bool
-is_VkCmdBlitImage = (EQ ==) . cmpCStrings _VkCmdBlitImage
-
-type VkCmdBlitImage = "vkCmdBlitImage"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
-##else
-vkCmdBlitImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-vkCmdBlitImage = unsafeDupablePerformIO (vkGetProc @VkCmdBlitImage)
-
-{-# NOINLINE vkCmdBlitImage #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
-##else
-vkCmdBlitImageSafe ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkImage -- ^ srcImage
-                             ->
-                       VkImageLayout -- ^ srcImageLayout
-                                     ->
-                         VkImage -- ^ dstImage
-                                 ->
-                           VkImageLayout -- ^ dstImageLayout
-                                         -> Word32 -- ^ regionCount
-                                                   -> Ptr VkImageBlit -- ^ pRegions
-                                                                      -> VkFilter -- ^ filter
-                                                                                  -> IO ()
-vkCmdBlitImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBlitImage)
-
-{-# NOINLINE vkCmdBlitImageSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdBlitImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageBlit* pRegions
---   >     , VkFilter filter
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
-type HS_vkCmdBlitImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   ->
-             VkImageLayout -- ^ dstImageLayout
-                           -> Word32 -- ^ regionCount
-                                     -> Ptr VkImageBlit -- ^ pRegions
-                                                        -> VkFilter -- ^ filter
-                                                                    -> IO ()
-
-type PFN_vkCmdBlitImage = FunPtr HS_vkCmdBlitImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBlitImage ::
-               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdBlitImageSafe ::
-               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
-
-instance VulkanProc "vkCmdBlitImage" where
-        type VkProcType "vkCmdBlitImage" = HS_vkCmdBlitImage
-        vkProcSymbol = _VkCmdBlitImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBlitImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBlitImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyBufferToImage :: CString
-
-pattern VkCmdCopyBufferToImage <-
-        (is_VkCmdCopyBufferToImage -> True)
-  where VkCmdCopyBufferToImage = _VkCmdCopyBufferToImage
-
-{-# INLINE _VkCmdCopyBufferToImage #-}
-
-_VkCmdCopyBufferToImage :: CString
-_VkCmdCopyBufferToImage = Ptr "vkCmdCopyBufferToImage\NUL"##
-
-{-# INLINE is_VkCmdCopyBufferToImage #-}
-
-is_VkCmdCopyBufferToImage :: CString -> Bool
-is_VkCmdCopyBufferToImage
-  = (EQ ==) . cmpCStrings _VkCmdCopyBufferToImage
-
-type VkCmdCopyBufferToImage = "vkCmdCopyBufferToImage"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
-##else
-vkCmdCopyBufferToImage ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkBuffer -- ^ srcBuffer
-                                  ->
-                           VkImage -- ^ dstImage
-                                   ->
-                             VkImageLayout -- ^ dstImageLayout
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                              -> IO ()
-vkCmdCopyBufferToImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyBufferToImage)
-
-{-# NOINLINE vkCmdCopyBufferToImage #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
-##else
-vkCmdCopyBufferToImageSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkBuffer -- ^ srcBuffer
-                                      ->
-                               VkImage -- ^ dstImage
-                                       ->
-                                 VkImageLayout -- ^ dstImageLayout
-                                               -> Word32 -- ^ regionCount
-                                                         -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                                  -> IO ()
-vkCmdCopyBufferToImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBufferToImage)
-
-{-# NOINLINE vkCmdCopyBufferToImageSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyBufferToImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
-type HS_vkCmdCopyBufferToImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ srcBuffer
-                ->
-         VkImage -- ^ dstImage
-                 ->
-           VkImageLayout -- ^ dstImageLayout
-                         -> Word32 -- ^ regionCount
-                                   -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                            -> IO ()
-
-type PFN_vkCmdCopyBufferToImage = FunPtr HS_vkCmdCopyBufferToImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBufferToImage
-               :: PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdCopyBufferToImageSafe ::
-               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
-
-instance VulkanProc "vkCmdCopyBufferToImage" where
-        type VkProcType "vkCmdCopyBufferToImage" =
-             HS_vkCmdCopyBufferToImage
-        vkProcSymbol = _VkCmdCopyBufferToImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyBufferToImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferToImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyImageToBuffer :: CString
-
-pattern VkCmdCopyImageToBuffer <-
-        (is_VkCmdCopyImageToBuffer -> True)
-  where VkCmdCopyImageToBuffer = _VkCmdCopyImageToBuffer
-
-{-# INLINE _VkCmdCopyImageToBuffer #-}
-
-_VkCmdCopyImageToBuffer :: CString
-_VkCmdCopyImageToBuffer = Ptr "vkCmdCopyImageToBuffer\NUL"##
-
-{-# INLINE is_VkCmdCopyImageToBuffer #-}
-
-is_VkCmdCopyImageToBuffer :: CString -> Bool
-is_VkCmdCopyImageToBuffer
-  = (EQ ==) . cmpCStrings _VkCmdCopyImageToBuffer
-
-type VkCmdCopyImageToBuffer = "vkCmdCopyImageToBuffer"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-##else
-vkCmdCopyImageToBuffer ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkImage -- ^ srcImage
-                                 ->
-                           VkImageLayout -- ^ srcImageLayout
-                                         ->
-                             VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                         -> IO ()
-vkCmdCopyImageToBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyImageToBuffer)
-
-{-# NOINLINE vkCmdCopyImageToBuffer #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-##else
-vkCmdCopyImageToBufferSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkImage -- ^ srcImage
-                                     ->
-                               VkImageLayout -- ^ srcImageLayout
-                                             ->
-                                 VkBuffer -- ^ dstBuffer
-                                          -> Word32 -- ^ regionCount
-                                                    -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                             -> IO ()
-vkCmdCopyImageToBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImageToBuffer)
-
-{-# NOINLINE vkCmdCopyImageToBufferSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyImageToBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
-type HS_vkCmdCopyImageToBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkBuffer -- ^ dstBuffer
-                    -> Word32 -- ^ regionCount
-                              -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                       -> IO ()
-
-type PFN_vkCmdCopyImageToBuffer = FunPtr HS_vkCmdCopyImageToBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImageToBuffer
-               :: PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdCopyImageToBufferSafe ::
-               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
-
-instance VulkanProc "vkCmdCopyImageToBuffer" where
-        type VkProcType "vkCmdCopyImageToBuffer" =
-             HS_vkCmdCopyImageToBuffer
-        vkProcSymbol = _VkCmdCopyImageToBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyImageToBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageToBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdUpdateBuffer :: CString
-
-pattern VkCmdUpdateBuffer <- (is_VkCmdUpdateBuffer -> True)
-  where VkCmdUpdateBuffer = _VkCmdUpdateBuffer
-
-{-# INLINE _VkCmdUpdateBuffer #-}
-
-_VkCmdUpdateBuffer :: CString
-_VkCmdUpdateBuffer = Ptr "vkCmdUpdateBuffer\NUL"##
-
-{-# INLINE is_VkCmdUpdateBuffer #-}
-
-is_VkCmdUpdateBuffer :: CString -> Bool
-is_VkCmdUpdateBuffer = (EQ ==) . cmpCStrings _VkCmdUpdateBuffer
-
-type VkCmdUpdateBuffer = "vkCmdUpdateBuffer"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdUpdateBuffer" vkCmdUpdateBuffer
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
-##else
-vkCmdUpdateBuffer ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkBuffer -- ^ dstBuffer
-                             -> VkDeviceSize -- ^ dstOffset
-                                             -> VkDeviceSize -- ^ dataSize
-                                                             -> Ptr Void -- ^ pData
-                                                                         -> IO ()
-vkCmdUpdateBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdUpdateBuffer)
-
-{-# NOINLINE vkCmdUpdateBuffer #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
-##else
-vkCmdUpdateBufferSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ dstBuffer
-                                 -> VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ dataSize
-                                                                 -> Ptr Void -- ^ pData
-                                                                             -> IO ()
-vkCmdUpdateBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdUpdateBuffer)
-
-{-# NOINLINE vkCmdUpdateBufferSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdUpdateBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize dataSize
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
-type HS_vkCmdUpdateBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ dstBuffer
-                -> VkDeviceSize -- ^ dstOffset
-                                -> VkDeviceSize -- ^ dataSize
-                                                -> Ptr Void -- ^ pData
-                                                            -> IO ()
-
-type PFN_vkCmdUpdateBuffer = FunPtr HS_vkCmdUpdateBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdUpdateBuffer ::
-               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdUpdateBufferSafe ::
-               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
-
-instance VulkanProc "vkCmdUpdateBuffer" where
-        type VkProcType "vkCmdUpdateBuffer" = HS_vkCmdUpdateBuffer
-        vkProcSymbol = _VkCmdUpdateBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdUpdateBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdUpdateBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdFillBuffer :: CString
-
-pattern VkCmdFillBuffer <- (is_VkCmdFillBuffer -> True)
-  where VkCmdFillBuffer = _VkCmdFillBuffer
-
-{-# INLINE _VkCmdFillBuffer #-}
-
-_VkCmdFillBuffer :: CString
-_VkCmdFillBuffer = Ptr "vkCmdFillBuffer\NUL"##
-
-{-# INLINE is_VkCmdFillBuffer #-}
-
-is_VkCmdFillBuffer :: CString -> Bool
-is_VkCmdFillBuffer = (EQ ==) . cmpCStrings _VkCmdFillBuffer
-
-type VkCmdFillBuffer = "vkCmdFillBuffer"
-
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
-##else
-vkCmdFillBuffer ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkBuffer -- ^ dstBuffer
-                           -> VkDeviceSize -- ^ dstOffset
-                                           -> VkDeviceSize -- ^ size
-                                                           -> Word32 -- ^ data
-                                                                     -> IO ()
-vkCmdFillBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdFillBuffer)
-
-{-# NOINLINE vkCmdFillBuffer #-}
-##endif
-
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
-##else
-vkCmdFillBufferSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkBuffer -- ^ dstBuffer
-                               -> VkDeviceSize -- ^ dstOffset
-                                               -> VkDeviceSize -- ^ size
-                                                               -> Word32 -- ^ data
-                                                                         -> IO ()
-vkCmdFillBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdFillBuffer)
-
-{-# NOINLINE vkCmdFillBufferSafe #-}
-##endif
-
--- | transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
---   Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdFillBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize size
---   >     , uint32_t data
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
-type HS_vkCmdFillBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ dstBuffer
-                -> VkDeviceSize -- ^ dstOffset
-                                -> VkDeviceSize -- ^ size
-                                                -> Word32 -- ^ data
-                                                          -> IO ()
-
-type PFN_vkCmdFillBuffer = FunPtr HS_vkCmdFillBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdFillBuffer ::
-               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdFillBufferSafe ::
-               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
-
-instance VulkanProc "vkCmdFillBuffer" where
-        type VkProcType "vkCmdFillBuffer" = HS_vkCmdFillBuffer
-        vkProcSymbol = _VkCmdFillBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdFillBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdFillBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdClearColorImage :: CString
-
-pattern VkCmdClearColorImage <- (is_VkCmdClearColorImage -> True)
-  where VkCmdClearColorImage = _VkCmdClearColorImage
-
-{-# INLINE _VkCmdClearColorImage #-}
-
-_VkCmdClearColorImage :: CString
-_VkCmdClearColorImage = Ptr "vkCmdClearColorImage\NUL"##
-
-{-# INLINE is_VkCmdClearColorImage #-}
-
-is_VkCmdClearColorImage :: CString -> Bool
-is_VkCmdClearColorImage
-  = (EQ ==) . cmpCStrings _VkCmdClearColorImage
-
-type VkCmdClearColorImage = "vkCmdClearColorImage"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdClearColorImage"
-               vkCmdClearColorImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearColorImage ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkImage -- ^ image
-                               ->
-                         VkImageLayout -- ^ imageLayout
-                                       ->
-                           Ptr VkClearColorValue -- ^ pColor
-                                                 ->
-                             Word32 -- ^ rangeCount
-                                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                   -> IO ()
-vkCmdClearColorImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdClearColorImage)
-
-{-# NOINLINE vkCmdClearColorImage #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdClearColorImage"
-               vkCmdClearColorImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearColorImageSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkImage -- ^ image
-                                   ->
-                             VkImageLayout -- ^ imageLayout
-                                           ->
-                               Ptr VkClearColorValue -- ^ pColor
-                                                     ->
-                                 Word32 -- ^ rangeCount
-                                        -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                       -> IO ()
-vkCmdClearColorImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearColorImage)
-
-{-# NOINLINE vkCmdClearColorImageSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdClearColorImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearColorValue* pColor
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
-type HS_vkCmdClearColorImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ image
-               ->
-         VkImageLayout -- ^ imageLayout
-                       ->
-           Ptr VkClearColorValue -- ^ pColor
-                                 ->
-             Word32 -- ^ rangeCount
-                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                   -> IO ()
-
-type PFN_vkCmdClearColorImage = FunPtr HS_vkCmdClearColorImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdClearColorImage ::
-               PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdClearColorImageSafe
-               :: PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
-
-instance VulkanProc "vkCmdClearColorImage" where
-        type VkProcType "vkCmdClearColorImage" = HS_vkCmdClearColorImage
-        vkProcSymbol = _VkCmdClearColorImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdClearColorImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdClearColorImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdClearDepthStencilImage :: CString
-
-pattern VkCmdClearDepthStencilImage <-
-        (is_VkCmdClearDepthStencilImage -> True)
-  where VkCmdClearDepthStencilImage = _VkCmdClearDepthStencilImage
-
-{-# INLINE _VkCmdClearDepthStencilImage #-}
-
-_VkCmdClearDepthStencilImage :: CString
-_VkCmdClearDepthStencilImage
-  = Ptr "vkCmdClearDepthStencilImage\NUL"##
-
-{-# INLINE is_VkCmdClearDepthStencilImage #-}
-
-is_VkCmdClearDepthStencilImage :: CString -> Bool
-is_VkCmdClearDepthStencilImage
-  = (EQ ==) . cmpCStrings _VkCmdClearDepthStencilImage
-
-type VkCmdClearDepthStencilImage = "vkCmdClearDepthStencilImage"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearDepthStencilImage ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              VkImage -- ^ image
-                                      ->
-                                VkImageLayout -- ^ imageLayout
-                                              ->
-                                  Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                               ->
-                                    Word32 -- ^ rangeCount
-                                           -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                          -> IO ()
-vkCmdClearDepthStencilImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdClearDepthStencilImage)
-
-{-# NOINLINE vkCmdClearDepthStencilImage #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearDepthStencilImageSafe ::
-                                VkCommandBuffer -- ^ commandBuffer
-                                                ->
-                                  VkImage -- ^ image
-                                          ->
-                                    VkImageLayout -- ^ imageLayout
-                                                  ->
-                                      Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                                   ->
-                                        Word32 -- ^ rangeCount
-                                               -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                              -> IO ()
-vkCmdClearDepthStencilImageSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCmdClearDepthStencilImage)
-
-{-# NOINLINE vkCmdClearDepthStencilImageSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdClearDepthStencilImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearDepthStencilValue* pDepthStencil
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
-type HS_vkCmdClearDepthStencilImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ image
-               ->
-         VkImageLayout -- ^ imageLayout
-                       ->
-           Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                        ->
-             Word32 -- ^ rangeCount
-                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                   -> IO ()
-
-type PFN_vkCmdClearDepthStencilImage =
-     FunPtr HS_vkCmdClearDepthStencilImage
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdClearDepthStencilImage ::
-               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdClearDepthStencilImageSafe ::
-               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
-
-instance VulkanProc "vkCmdClearDepthStencilImage" where
-        type VkProcType "vkCmdClearDepthStencilImage" =
-             HS_vkCmdClearDepthStencilImage
-        vkProcSymbol = _VkCmdClearDepthStencilImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdClearDepthStencilImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdClearDepthStencilImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdClearAttachments :: CString
-
-pattern VkCmdClearAttachments <- (is_VkCmdClearAttachments -> True)
-  where VkCmdClearAttachments = _VkCmdClearAttachments
-
-{-# INLINE _VkCmdClearAttachments #-}
-
-_VkCmdClearAttachments :: CString
-_VkCmdClearAttachments = Ptr "vkCmdClearAttachments\NUL"##
-
-{-# INLINE is_VkCmdClearAttachments #-}
-
-is_VkCmdClearAttachments :: CString -> Bool
-is_VkCmdClearAttachments
-  = (EQ ==) . cmpCStrings _VkCmdClearAttachments
-
-type VkCmdClearAttachments = "vkCmdClearAttachments"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdClearAttachments"
-               vkCmdClearAttachments ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
-##else
-vkCmdClearAttachments ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ attachmentCount
-                               ->
-                          Ptr VkClearAttachment -- ^ pAttachments
-                                                -> Word32 -- ^ rectCount
-                                                          -> Ptr VkClearRect -- ^ pRects
-                                                                             -> IO ()
-vkCmdClearAttachments
-  = unsafeDupablePerformIO (vkGetProc @VkCmdClearAttachments)
-
-{-# NOINLINE vkCmdClearAttachments #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdClearAttachments"
-               vkCmdClearAttachmentsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
-##else
-vkCmdClearAttachmentsSafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            Word32 -- ^ attachmentCount
-                                   ->
-                              Ptr VkClearAttachment -- ^ pAttachments
-                                                    -> Word32 -- ^ rectCount
-                                                              -> Ptr VkClearRect -- ^ pRects
-                                                                                 -> IO ()
-vkCmdClearAttachmentsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearAttachments)
-
-{-# NOINLINE vkCmdClearAttachmentsSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdClearAttachments
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t attachmentCount
---   >     , const VkClearAttachment* pAttachments
---   >     , uint32_t rectCount
---   >     , const VkClearRect* pRects
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
-type HS_vkCmdClearAttachments =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ attachmentCount
-              ->
-         Ptr VkClearAttachment -- ^ pAttachments
-                               -> Word32 -- ^ rectCount
-                                         -> Ptr VkClearRect -- ^ pRects
-                                                            -> IO ()
-
-type PFN_vkCmdClearAttachments = FunPtr HS_vkCmdClearAttachments
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdClearAttachments
-               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
-
-foreign import ccall safe "dynamic" unwrapVkCmdClearAttachmentsSafe
-               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
-
-instance VulkanProc "vkCmdClearAttachments" where
-        type VkProcType "vkCmdClearAttachments" = HS_vkCmdClearAttachments
-        vkProcSymbol = _VkCmdClearAttachments
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdClearAttachments
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdClearAttachmentsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdResolveImage :: CString
-
-pattern VkCmdResolveImage <- (is_VkCmdResolveImage -> True)
-  where VkCmdResolveImage = _VkCmdResolveImage
-
-{-# INLINE _VkCmdResolveImage #-}
-
-_VkCmdResolveImage :: CString
-_VkCmdResolveImage = Ptr "vkCmdResolveImage\NUL"##
-
-{-# INLINE is_VkCmdResolveImage #-}
-
-is_VkCmdResolveImage :: CString -> Bool
-is_VkCmdResolveImage = (EQ ==) . cmpCStrings _VkCmdResolveImage
-
-type VkCmdResolveImage = "vkCmdResolveImage"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdResolveImage" vkCmdResolveImage
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
-##else
-vkCmdResolveImage ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkImage -- ^ srcImage
-                            ->
-                      VkImageLayout -- ^ srcImageLayout
-                                    ->
-                        VkImage -- ^ dstImage
-                                -> VkImageLayout -- ^ dstImageLayout
-                                                 -> Word32 -- ^ regionCount
-                                                           -> Ptr VkImageResolve -- ^ pRegions
-                                                                                 -> IO ()
-vkCmdResolveImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdResolveImage)
-
-{-# NOINLINE vkCmdResolveImage #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
-##else
-vkCmdResolveImageSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkImage -- ^ srcImage
-                                ->
-                          VkImageLayout -- ^ srcImageLayout
-                                        ->
-                            VkImage -- ^ dstImage
-                                    -> VkImageLayout -- ^ dstImageLayout
-                                                     -> Word32 -- ^ regionCount
-                                                               -> Ptr VkImageResolve -- ^ pRegions
-                                                                                     -> IO ()
-vkCmdResolveImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResolveImage)
-
-{-# NOINLINE vkCmdResolveImageSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdResolveImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageResolve* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
-type HS_vkCmdResolveImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   -> VkImageLayout -- ^ dstImageLayout
-                                    -> Word32 -- ^ regionCount
-                                              -> Ptr VkImageResolve -- ^ pRegions
-                                                                    -> IO ()
-
-type PFN_vkCmdResolveImage = FunPtr HS_vkCmdResolveImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdResolveImage ::
-               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdResolveImageSafe ::
-               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
-
-instance VulkanProc "vkCmdResolveImage" where
-        type VkProcType "vkCmdResolveImage" = HS_vkCmdResolveImage
-        vkProcSymbol = _VkCmdResolveImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdResolveImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdResolveImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetEvent :: CString
-
-pattern VkCmdSetEvent <- (is_VkCmdSetEvent -> True)
-  where VkCmdSetEvent = _VkCmdSetEvent
-
-{-# INLINE _VkCmdSetEvent #-}
-
-_VkCmdSetEvent :: CString
-_VkCmdSetEvent = Ptr "vkCmdSetEvent\NUL"##
-
-{-# INLINE is_VkCmdSetEvent #-}
-
-is_VkCmdSetEvent :: CString -> Bool
-is_VkCmdSetEvent = (EQ ==) . cmpCStrings _VkCmdSetEvent
-
-type VkCmdSetEvent = "vkCmdSetEvent"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEvent ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdSetEvent ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> VkEvent -- ^ event
-                                         -> VkPipelineStageFlags -- ^ stageMask
-                                                                 -> IO ()
-vkCmdSetEvent = unsafeDupablePerformIO (vkGetProc @VkCmdSetEvent)
-
-{-# NOINLINE vkCmdSetEvent #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdSetEventSafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkEvent -- ^ event
-                                             -> VkPipelineStageFlags -- ^ stageMask
-                                                                     -> IO ()
-vkCmdSetEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetEvent)
-
-{-# NOINLINE vkCmdSetEventSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdSetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
-type HS_vkCmdSetEvent =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkEvent -- ^ event
-                                -> VkPipelineStageFlags -- ^ stageMask
-                                                        -> IO ()
-
-type PFN_vkCmdSetEvent = FunPtr HS_vkCmdSetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetEvent ::
-               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetEventSafe ::
-               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
-
-instance VulkanProc "vkCmdSetEvent" where
-        type VkProcType "vkCmdSetEvent" = HS_vkCmdSetEvent
-        vkProcSymbol = _VkCmdSetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdResetEvent :: CString
-
-pattern VkCmdResetEvent <- (is_VkCmdResetEvent -> True)
-  where VkCmdResetEvent = _VkCmdResetEvent
-
-{-# INLINE _VkCmdResetEvent #-}
-
-_VkCmdResetEvent :: CString
-_VkCmdResetEvent = Ptr "vkCmdResetEvent\NUL"##
-
-{-# INLINE is_VkCmdResetEvent #-}
-
-is_VkCmdResetEvent :: CString -> Bool
-is_VkCmdResetEvent = (EQ ==) . cmpCStrings _VkCmdResetEvent
-
-type VkCmdResetEvent = "vkCmdResetEvent"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEvent ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdResetEvent ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> VkEvent -- ^ event
-                                           -> VkPipelineStageFlags -- ^ stageMask
-                                                                   -> IO ()
-vkCmdResetEvent
-  = unsafeDupablePerformIO (vkGetProc @VkCmdResetEvent)
-
-{-# NOINLINE vkCmdResetEvent #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdResetEventSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkEvent -- ^ event
-                                               -> VkPipelineStageFlags -- ^ stageMask
-                                                                       -> IO ()
-vkCmdResetEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetEvent)
-
-{-# NOINLINE vkCmdResetEventSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdResetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
-type HS_vkCmdResetEvent =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkEvent -- ^ event
-                                -> VkPipelineStageFlags -- ^ stageMask
-                                                        -> IO ()
-
-type PFN_vkCmdResetEvent = FunPtr HS_vkCmdResetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdResetEvent ::
-               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
-
-foreign import ccall safe "dynamic" unwrapVkCmdResetEventSafe ::
-               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
-
-instance VulkanProc "vkCmdResetEvent" where
-        type VkProcType "vkCmdResetEvent" = HS_vkCmdResetEvent
-        vkProcSymbol = _VkCmdResetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdResetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdResetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdWaitEvents :: CString
-
-pattern VkCmdWaitEvents <- (is_VkCmdWaitEvents -> True)
-  where VkCmdWaitEvents = _VkCmdWaitEvents
-
-{-# INLINE _VkCmdWaitEvents #-}
-
-_VkCmdWaitEvents :: CString
-_VkCmdWaitEvents = Ptr "vkCmdWaitEvents\NUL"##
-
-{-# INLINE is_VkCmdWaitEvents #-}
-
-is_VkCmdWaitEvents :: CString -> Bool
-is_VkCmdWaitEvents = (EQ ==) . cmpCStrings _VkCmdWaitEvents
-
-type VkCmdWaitEvents = "vkCmdWaitEvents"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdWaitEvents" vkCmdWaitEvents ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ eventCount
-                        ->
-                   Ptr VkEvent -- ^ pEvents
-                               ->
-                     VkPipelineStageFlags -- ^ srcStageMask
-                                          ->
-                       VkPipelineStageFlags -- ^ dstStageMask
-                                            ->
-                         Word32 -- ^ memoryBarrierCount
-                                ->
-                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                               ->
-                             Word32 -- ^ bufferMemoryBarrierCount
-                                    ->
-                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                         ->
-                                 Word32 -- ^ imageMemoryBarrierCount
-                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                    -> IO ()
-
-##else
-vkCmdWaitEvents ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  Word32 -- ^ eventCount
-                         ->
-                    Ptr VkEvent -- ^ pEvents
-                                ->
-                      VkPipelineStageFlags -- ^ srcStageMask
-                                           ->
-                        VkPipelineStageFlags -- ^ dstStageMask
-                                             ->
-                          Word32 -- ^ memoryBarrierCount
-                                 ->
-                            Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                ->
-                              Word32 -- ^ bufferMemoryBarrierCount
-                                     ->
-                                Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                          ->
-                                  Word32 -- ^ imageMemoryBarrierCount
-                                         -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                     -> IO ()
-vkCmdWaitEvents
-  = unsafeDupablePerformIO (vkGetProc @VkCmdWaitEvents)
-
-{-# NOINLINE vkCmdWaitEvents #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdWaitEvents" vkCmdWaitEventsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ eventCount
-                        ->
-                   Ptr VkEvent -- ^ pEvents
-                               ->
-                     VkPipelineStageFlags -- ^ srcStageMask
-                                          ->
-                       VkPipelineStageFlags -- ^ dstStageMask
-                                            ->
-                         Word32 -- ^ memoryBarrierCount
-                                ->
-                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                               ->
-                             Word32 -- ^ bufferMemoryBarrierCount
-                                    ->
-                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                         ->
-                                 Word32 -- ^ imageMemoryBarrierCount
-                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                    -> IO ()
-
-##else
-vkCmdWaitEventsSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      Word32 -- ^ eventCount
-                             ->
-                        Ptr VkEvent -- ^ pEvents
-                                    ->
-                          VkPipelineStageFlags -- ^ srcStageMask
-                                               ->
-                            VkPipelineStageFlags -- ^ dstStageMask
-                                                 ->
-                              Word32 -- ^ memoryBarrierCount
-                                     ->
-                                Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                    ->
-                                  Word32 -- ^ bufferMemoryBarrierCount
-                                         ->
-                                    Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                              ->
-                                      Word32 -- ^ imageMemoryBarrierCount
-                                             -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                         -> IO ()
-vkCmdWaitEventsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWaitEvents)
-
-{-# NOINLINE vkCmdWaitEventsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdWaitEvents
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t eventCount
---   >     , const VkEvent* pEvents
---   >     , VkPipelineStageFlags srcStageMask
---   >     , VkPipelineStageFlags dstStageMask
---   >     , uint32_t memoryBarrierCount
---   >     , const VkMemoryBarrier* pMemoryBarriers
---   >     , uint32_t bufferMemoryBarrierCount
---   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
---   >     , uint32_t imageMemoryBarrierCount
---   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
-type HS_vkCmdWaitEvents =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ eventCount
-              ->
-         Ptr VkEvent -- ^ pEvents
-                     ->
-           VkPipelineStageFlags -- ^ srcStageMask
-                                ->
-             VkPipelineStageFlags -- ^ dstStageMask
-                                  ->
-               Word32 -- ^ memoryBarrierCount
-                      ->
-                 Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                     ->
-                   Word32 -- ^ bufferMemoryBarrierCount
-                          ->
-                     Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                               ->
-                       Word32 -- ^ imageMemoryBarrierCount
-                              -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                          -> IO ()
-
-type PFN_vkCmdWaitEvents = FunPtr HS_vkCmdWaitEvents
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdWaitEvents ::
-               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
-
-foreign import ccall safe "dynamic" unwrapVkCmdWaitEventsSafe ::
-               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
-
-instance VulkanProc "vkCmdWaitEvents" where
-        type VkProcType "vkCmdWaitEvents" = HS_vkCmdWaitEvents
-        vkProcSymbol = _VkCmdWaitEvents
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdWaitEvents
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdWaitEventsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdPipelineBarrier :: CString
-
-pattern VkCmdPipelineBarrier <- (is_VkCmdPipelineBarrier -> True)
-  where VkCmdPipelineBarrier = _VkCmdPipelineBarrier
-
-{-# INLINE _VkCmdPipelineBarrier #-}
-
-_VkCmdPipelineBarrier :: CString
-_VkCmdPipelineBarrier = Ptr "vkCmdPipelineBarrier\NUL"##
-
-{-# INLINE is_VkCmdPipelineBarrier #-}
-
-is_VkCmdPipelineBarrier :: CString -> Bool
-is_VkCmdPipelineBarrier
-  = (EQ ==) . cmpCStrings _VkCmdPipelineBarrier
-
-type VkCmdPipelineBarrier = "vkCmdPipelineBarrier"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdPipelineBarrier"
-               vkCmdPipelineBarrier ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlags -- ^ srcStageMask
-                                      ->
-                   VkPipelineStageFlags -- ^ dstStageMask
-                                        ->
-                     VkDependencyFlags -- ^ dependencyFlags
-                                       ->
-                       Word32 -- ^ memoryBarrierCount
-                              ->
-                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                             ->
-                           Word32 -- ^ bufferMemoryBarrierCount
-                                  ->
-                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                       ->
-                               Word32 -- ^ imageMemoryBarrierCount
-                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                  -> IO ()
-
-##else
-vkCmdPipelineBarrier ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkPipelineStageFlags -- ^ srcStageMask
-                                            ->
-                         VkPipelineStageFlags -- ^ dstStageMask
-                                              ->
-                           VkDependencyFlags -- ^ dependencyFlags
-                                             ->
-                             Word32 -- ^ memoryBarrierCount
-                                    ->
-                               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                   ->
-                                 Word32 -- ^ bufferMemoryBarrierCount
-                                        ->
-                                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                             ->
-                                     Word32 -- ^ imageMemoryBarrierCount
-                                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                        -> IO ()
-vkCmdPipelineBarrier
-  = unsafeDupablePerformIO (vkGetProc @VkCmdPipelineBarrier)
-
-{-# NOINLINE vkCmdPipelineBarrier #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdPipelineBarrier"
-               vkCmdPipelineBarrierSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlags -- ^ srcStageMask
-                                      ->
-                   VkPipelineStageFlags -- ^ dstStageMask
-                                        ->
-                     VkDependencyFlags -- ^ dependencyFlags
-                                       ->
-                       Word32 -- ^ memoryBarrierCount
-                              ->
-                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                             ->
-                           Word32 -- ^ bufferMemoryBarrierCount
-                                  ->
-                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                       ->
-                               Word32 -- ^ imageMemoryBarrierCount
-                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                  -> IO ()
-
-##else
-vkCmdPipelineBarrierSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkPipelineStageFlags -- ^ srcStageMask
-                                                ->
-                             VkPipelineStageFlags -- ^ dstStageMask
-                                                  ->
-                               VkDependencyFlags -- ^ dependencyFlags
-                                                 ->
-                                 Word32 -- ^ memoryBarrierCount
-                                        ->
-                                   Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                       ->
-                                     Word32 -- ^ bufferMemoryBarrierCount
-                                            ->
-                                       Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                                 ->
-                                         Word32 -- ^ imageMemoryBarrierCount
-                                                -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                            -> IO ()
-vkCmdPipelineBarrierSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPipelineBarrier)
-
-{-# NOINLINE vkCmdPipelineBarrierSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdPipelineBarrier
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlags srcStageMask
---   >     , VkPipelineStageFlags dstStageMask
---   >     , VkDependencyFlags dependencyFlags
---   >     , uint32_t memoryBarrierCount
---   >     , const VkMemoryBarrier* pMemoryBarriers
---   >     , uint32_t bufferMemoryBarrierCount
---   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
---   >     , uint32_t imageMemoryBarrierCount
---   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
-type HS_vkCmdPipelineBarrier =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineStageFlags -- ^ srcStageMask
-                            ->
-         VkPipelineStageFlags -- ^ dstStageMask
-                              ->
-           VkDependencyFlags -- ^ dependencyFlags
-                             ->
-             Word32 -- ^ memoryBarrierCount
-                    ->
-               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                   ->
-                 Word32 -- ^ bufferMemoryBarrierCount
-                        ->
-                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                             ->
-                     Word32 -- ^ imageMemoryBarrierCount
-                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                        -> IO ()
-
-type PFN_vkCmdPipelineBarrier = FunPtr HS_vkCmdPipelineBarrier
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdPipelineBarrier ::
-               PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
-
-foreign import ccall safe "dynamic" unwrapVkCmdPipelineBarrierSafe
-               :: PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
-
-instance VulkanProc "vkCmdPipelineBarrier" where
-        type VkProcType "vkCmdPipelineBarrier" = HS_vkCmdPipelineBarrier
-        vkProcSymbol = _VkCmdPipelineBarrier
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdPipelineBarrier
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdPipelineBarrierSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBeginQuery :: CString
-
-pattern VkCmdBeginQuery <- (is_VkCmdBeginQuery -> True)
-  where VkCmdBeginQuery = _VkCmdBeginQuery
-
-{-# INLINE _VkCmdBeginQuery #-}
-
-_VkCmdBeginQuery :: CString
-_VkCmdBeginQuery = Ptr "vkCmdBeginQuery\NUL"##
-
-{-# INLINE is_VkCmdBeginQuery #-}
-
-is_VkCmdBeginQuery :: CString -> Bool
-is_VkCmdBeginQuery = (EQ ==) . cmpCStrings _VkCmdBeginQuery
-
-type VkCmdBeginQuery = "vkCmdBeginQuery"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQuery ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
-##else
-vkCmdBeginQuery ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkQueryPool -- ^ queryPool
-                              -> Word32 -- ^ query
-                                        -> VkQueryControlFlags -- ^ flags
-                                                               -> IO ()
-vkCmdBeginQuery
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBeginQuery)
-
-{-# NOINLINE vkCmdBeginQuery #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
-##else
-vkCmdBeginQuerySafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkQueryPool -- ^ queryPool
-                                  -> Word32 -- ^ query
-                                            -> VkQueryControlFlags -- ^ flags
-                                                                   -> IO ()
-vkCmdBeginQuerySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginQuery)
-
-{-# NOINLINE vkCmdBeginQuerySafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBeginQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     , VkQueryControlFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
-type HS_vkCmdBeginQuery =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkQueryPool -- ^ queryPool
-                   -> Word32 -- ^ query
-                             -> VkQueryControlFlags -- ^ flags
-                                                    -> IO ()
-
-type PFN_vkCmdBeginQuery = FunPtr HS_vkCmdBeginQuery
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBeginQuery ::
-               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
-
-foreign import ccall safe "dynamic" unwrapVkCmdBeginQuerySafe ::
-               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
-
-instance VulkanProc "vkCmdBeginQuery" where
-        type VkProcType "vkCmdBeginQuery" = HS_vkCmdBeginQuery
-        vkProcSymbol = _VkCmdBeginQuery
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBeginQuery
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBeginQuerySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdEndQuery :: CString
-
-pattern VkCmdEndQuery <- (is_VkCmdEndQuery -> True)
-  where VkCmdEndQuery = _VkCmdEndQuery
-
-{-# INLINE _VkCmdEndQuery #-}
-
-_VkCmdEndQuery :: CString
-_VkCmdEndQuery = Ptr "vkCmdEndQuery\NUL"##
-
-{-# INLINE is_VkCmdEndQuery #-}
-
-is_VkCmdEndQuery :: CString -> Bool
-is_VkCmdEndQuery = (EQ ==) . cmpCStrings _VkCmdEndQuery
-
-type VkCmdEndQuery = "vkCmdEndQuery"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQuery ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-##else
-vkCmdEndQuery :: VkCommandBuffer -- ^ commandBuffer
-                                 -> VkQueryPool -- ^ queryPool
-                                                -> Word32 -- ^ query
-                                                          -> IO ()
-vkCmdEndQuery = unsafeDupablePerformIO (vkGetProc @VkCmdEndQuery)
-
-{-# NOINLINE vkCmdEndQuery #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-##else
-vkCmdEndQuerySafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkQueryPool -- ^ queryPool
-                                                 -> Word32 -- ^ query
-                                                           -> IO ()
-vkCmdEndQuerySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndQuery)
-
-{-# NOINLINE vkCmdEndQuerySafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdEndQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
-type HS_vkCmdEndQuery =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ query
-                                              -> IO ()
-
-type PFN_vkCmdEndQuery = FunPtr HS_vkCmdEndQuery
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdEndQuery ::
-               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
-
-foreign import ccall safe "dynamic" unwrapVkCmdEndQuerySafe ::
-               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
-
-instance VulkanProc "vkCmdEndQuery" where
-        type VkProcType "vkCmdEndQuery" = HS_vkCmdEndQuery
-        vkProcSymbol = _VkCmdEndQuery
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdEndQuery
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdEndQuerySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdResetQueryPool :: CString
-
-pattern VkCmdResetQueryPool <- (is_VkCmdResetQueryPool -> True)
-  where VkCmdResetQueryPool = _VkCmdResetQueryPool
-
-{-# INLINE _VkCmdResetQueryPool #-}
-
-_VkCmdResetQueryPool :: CString
-_VkCmdResetQueryPool = Ptr "vkCmdResetQueryPool\NUL"##
-
-{-# INLINE is_VkCmdResetQueryPool #-}
-
-is_VkCmdResetQueryPool :: CString -> Bool
-is_VkCmdResetQueryPool = (EQ ==) . cmpCStrings _VkCmdResetQueryPool
-
-type VkCmdResetQueryPool = "vkCmdResetQueryPool"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdResetQueryPool"
-               vkCmdResetQueryPool ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
-##else
-vkCmdResetQueryPool ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkQueryPool -- ^ queryPool
-                                                   -> Word32 -- ^ firstQuery
-                                                             -> Word32 -- ^ queryCount
-                                                                       -> IO ()
-vkCmdResetQueryPool
-  = unsafeDupablePerformIO (vkGetProc @VkCmdResetQueryPool)
-
-{-# NOINLINE vkCmdResetQueryPool #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdResetQueryPool"
-               vkCmdResetQueryPoolSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
-##else
-vkCmdResetQueryPoolSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        -> VkQueryPool -- ^ queryPool
-                                                       -> Word32 -- ^ firstQuery
-                                                                 -> Word32 -- ^ queryCount
-                                                                           -> IO ()
-vkCmdResetQueryPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetQueryPool)
-
-{-# NOINLINE vkCmdResetQueryPoolSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdResetQueryPool
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
-type HS_vkCmdResetQueryPool =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ firstQuery
-                                              -> Word32 -- ^ queryCount
-                                                        -> IO ()
-
-type PFN_vkCmdResetQueryPool = FunPtr HS_vkCmdResetQueryPool
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdResetQueryPool ::
-               PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
-
-foreign import ccall safe "dynamic" unwrapVkCmdResetQueryPoolSafe
-               :: PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
-
-instance VulkanProc "vkCmdResetQueryPool" where
-        type VkProcType "vkCmdResetQueryPool" = HS_vkCmdResetQueryPool
-        vkProcSymbol = _VkCmdResetQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdResetQueryPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdResetQueryPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdWriteTimestamp :: CString
-
-pattern VkCmdWriteTimestamp <- (is_VkCmdWriteTimestamp -> True)
-  where VkCmdWriteTimestamp = _VkCmdWriteTimestamp
-
-{-# INLINE _VkCmdWriteTimestamp #-}
-
-_VkCmdWriteTimestamp :: CString
-_VkCmdWriteTimestamp = Ptr "vkCmdWriteTimestamp\NUL"##
-
-{-# INLINE is_VkCmdWriteTimestamp #-}
-
-is_VkCmdWriteTimestamp :: CString -> Bool
-is_VkCmdWriteTimestamp = (EQ ==) . cmpCStrings _VkCmdWriteTimestamp
-
-type VkCmdWriteTimestamp = "vkCmdWriteTimestamp"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestamp ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
-##else
-vkCmdWriteTimestamp ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkPipelineStageFlagBits -- ^ pipelineStage
-                                              -> VkQueryPool -- ^ queryPool
-                                                             -> Word32 -- ^ query
-                                                                       -> IO ()
-vkCmdWriteTimestamp
-  = unsafeDupablePerformIO (vkGetProc @VkCmdWriteTimestamp)
-
-{-# NOINLINE vkCmdWriteTimestamp #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestampSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
-##else
-vkCmdWriteTimestampSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkPipelineStageFlagBits -- ^ pipelineStage
-                                                  -> VkQueryPool -- ^ queryPool
-                                                                 -> Word32 -- ^ query
-                                                                           -> IO ()
-vkCmdWriteTimestampSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWriteTimestamp)
-
-{-# NOINLINE vkCmdWriteTimestampSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   Pipeline: @transfer@
---
---   > void vkCmdWriteTimestamp
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlagBits pipelineStage
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
-type HS_vkCmdWriteTimestamp =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineStageFlagBits -- ^ pipelineStage
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-type PFN_vkCmdWriteTimestamp = FunPtr HS_vkCmdWriteTimestamp
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdWriteTimestamp ::
-               PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
-
-foreign import ccall safe "dynamic" unwrapVkCmdWriteTimestampSafe
-               :: PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
-
-instance VulkanProc "vkCmdWriteTimestamp" where
-        type VkProcType "vkCmdWriteTimestamp" = HS_vkCmdWriteTimestamp
-        vkProcSymbol = _VkCmdWriteTimestamp
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdWriteTimestamp
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdWriteTimestampSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyQueryPoolResults :: CString
-
-pattern VkCmdCopyQueryPoolResults <-
-        (is_VkCmdCopyQueryPoolResults -> True)
-  where VkCmdCopyQueryPoolResults = _VkCmdCopyQueryPoolResults
-
-{-# INLINE _VkCmdCopyQueryPoolResults #-}
-
-_VkCmdCopyQueryPoolResults :: CString
-_VkCmdCopyQueryPoolResults = Ptr "vkCmdCopyQueryPoolResults\NUL"##
-
-{-# INLINE is_VkCmdCopyQueryPoolResults #-}
-
-is_VkCmdCopyQueryPoolResults :: CString -> Bool
-is_VkCmdCopyQueryPoolResults
-  = (EQ ==) . cmpCStrings _VkCmdCopyQueryPoolResults
-
-type VkCmdCopyQueryPoolResults = "vkCmdCopyQueryPoolResults"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResults ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
-##else
-vkCmdCopyQueryPoolResults ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            VkQueryPool -- ^ queryPool
-                                        ->
-                              Word32 -- ^ firstQuery
-                                     ->
-                                Word32 -- ^ queryCount
-                                       ->
-                                  VkBuffer -- ^ dstBuffer
-                                           ->
-                                    VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ stride
-                                                                 -> VkQueryResultFlags -- ^ flags
-                                                                                       -> IO ()
-vkCmdCopyQueryPoolResults
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyQueryPoolResults)
-
-{-# NOINLINE vkCmdCopyQueryPoolResults #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResultsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
-##else
-vkCmdCopyQueryPoolResultsSafe ::
-                              VkCommandBuffer -- ^ commandBuffer
-                                              ->
-                                VkQueryPool -- ^ queryPool
-                                            ->
-                                  Word32 -- ^ firstQuery
-                                         ->
-                                    Word32 -- ^ queryCount
-                                           ->
-                                      VkBuffer -- ^ dstBuffer
-                                               ->
-                                        VkDeviceSize -- ^ dstOffset
-                                                     -> VkDeviceSize -- ^ stride
-                                                                     -> VkQueryResultFlags -- ^ flags
-                                                                                           -> IO ()
-vkCmdCopyQueryPoolResultsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyQueryPoolResults)
-
-{-# NOINLINE vkCmdCopyQueryPoolResultsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyQueryPoolResults
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize stride
---   >     , VkQueryResultFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
-type HS_vkCmdCopyQueryPoolResults =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkQueryPool -- ^ queryPool
-                   ->
-         Word32 -- ^ firstQuery
-                ->
-           Word32 -- ^ queryCount
-                  ->
-             VkBuffer -- ^ dstBuffer
-                      ->
-               VkDeviceSize -- ^ dstOffset
-                            -> VkDeviceSize -- ^ stride
-                                            -> VkQueryResultFlags -- ^ flags
-                                                                  -> IO ()
-
-type PFN_vkCmdCopyQueryPoolResults =
-     FunPtr HS_vkCmdCopyQueryPoolResults
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdCopyQueryPoolResults ::
-               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdCopyQueryPoolResultsSafe ::
-               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
-
-instance VulkanProc "vkCmdCopyQueryPoolResults" where
-        type VkProcType "vkCmdCopyQueryPoolResults" =
-             HS_vkCmdCopyQueryPoolResults
-        vkProcSymbol = _VkCmdCopyQueryPoolResults
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyQueryPoolResults
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyQueryPoolResultsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdPushConstants :: CString
-
-pattern VkCmdPushConstants <- (is_VkCmdPushConstants -> True)
-  where VkCmdPushConstants = _VkCmdPushConstants
-
-{-# INLINE _VkCmdPushConstants #-}
-
-_VkCmdPushConstants :: CString
-_VkCmdPushConstants = Ptr "vkCmdPushConstants\NUL"##
-
-{-# INLINE is_VkCmdPushConstants #-}
-
-is_VkCmdPushConstants :: CString -> Bool
-is_VkCmdPushConstants = (EQ ==) . cmpCStrings _VkCmdPushConstants
-
-type VkCmdPushConstants = "vkCmdPushConstants"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdPushConstants" vkCmdPushConstants
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
-##else
-vkCmdPushConstants ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkPipelineLayout -- ^ layout
-                                      ->
-                       VkShaderStageFlags -- ^ stageFlags
-                                          -> Word32 -- ^ offset
-                                                    -> Word32 -- ^ size
-                                                              -> Ptr Void -- ^ pValues
-                                                                          -> IO ()
-vkCmdPushConstants
-  = unsafeDupablePerformIO (vkGetProc @VkCmdPushConstants)
-
-{-# NOINLINE vkCmdPushConstants #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdPushConstants"
-               vkCmdPushConstantsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
-##else
-vkCmdPushConstantsSafe ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkPipelineLayout -- ^ layout
-                                          ->
-                           VkShaderStageFlags -- ^ stageFlags
-                                              -> Word32 -- ^ offset
-                                                        -> Word32 -- ^ size
-                                                                  -> Ptr Void -- ^ pValues
-                                                                              -> IO ()
-vkCmdPushConstantsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPushConstants)
-
-{-# NOINLINE vkCmdPushConstantsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdPushConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineLayout layout
---   >     , VkShaderStageFlags stageFlags
---   >     , uint32_t offset
---   >     , uint32_t size
---   >     , const void* pValues
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
-type HS_vkCmdPushConstants =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineLayout -- ^ layout
-                        ->
-         VkShaderStageFlags -- ^ stageFlags
-                            -> Word32 -- ^ offset
-                                      -> Word32 -- ^ size
-                                                -> Ptr Void -- ^ pValues
-                                                            -> IO ()
-
-type PFN_vkCmdPushConstants = FunPtr HS_vkCmdPushConstants
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdPushConstants ::
-               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
-
-foreign import ccall safe "dynamic" unwrapVkCmdPushConstantsSafe ::
-               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
-
-instance VulkanProc "vkCmdPushConstants" where
-        type VkProcType "vkCmdPushConstants" = HS_vkCmdPushConstants
-        vkProcSymbol = _VkCmdPushConstants
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdPushConstants
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdPushConstantsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBeginRenderPass :: CString
-
-pattern VkCmdBeginRenderPass <- (is_VkCmdBeginRenderPass -> True)
-  where VkCmdBeginRenderPass = _VkCmdBeginRenderPass
-
-{-# INLINE _VkCmdBeginRenderPass #-}
-
-_VkCmdBeginRenderPass :: CString
-_VkCmdBeginRenderPass = Ptr "vkCmdBeginRenderPass\NUL"##
-
-{-# INLINE is_VkCmdBeginRenderPass #-}
-
-is_VkCmdBeginRenderPass :: CString -> Bool
-is_VkCmdBeginRenderPass
-  = (EQ ==) . cmpCStrings _VkCmdBeginRenderPass
-
-type VkCmdBeginRenderPass = "vkCmdBeginRenderPass"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPass ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
-##else
-vkCmdBeginRenderPass ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                 -> VkSubpassContents -- ^ contents
-                                                                      -> IO ()
-vkCmdBeginRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBeginRenderPass)
-
-{-# NOINLINE vkCmdBeginRenderPass #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPassSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
-##else
-vkCmdBeginRenderPassSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                     -> VkSubpassContents -- ^ contents
-                                                                          -> IO ()
-vkCmdBeginRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginRenderPass)
-
-{-# NOINLINE vkCmdBeginRenderPassSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdBeginRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkRenderPassBeginInfo* pRenderPassBegin
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
-type HS_vkCmdBeginRenderPass =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                 -> VkSubpassContents -- ^ contents
-                                                      -> IO ()
-
-type PFN_vkCmdBeginRenderPass = FunPtr HS_vkCmdBeginRenderPass
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBeginRenderPass ::
-               PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkCmdBeginRenderPassSafe
-               :: PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
-
-instance VulkanProc "vkCmdBeginRenderPass" where
-        type VkProcType "vkCmdBeginRenderPass" = HS_vkCmdBeginRenderPass
-        vkProcSymbol = _VkCmdBeginRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBeginRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBeginRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdNextSubpass :: CString
-
-pattern VkCmdNextSubpass <- (is_VkCmdNextSubpass -> True)
-  where VkCmdNextSubpass = _VkCmdNextSubpass
-
-{-# INLINE _VkCmdNextSubpass #-}
-
-_VkCmdNextSubpass :: CString
-_VkCmdNextSubpass = Ptr "vkCmdNextSubpass\NUL"##
-
-{-# INLINE is_VkCmdNextSubpass #-}
-
-is_VkCmdNextSubpass :: CString -> Bool
-is_VkCmdNextSubpass = (EQ ==) . cmpCStrings _VkCmdNextSubpass
-
-type VkCmdNextSubpass = "vkCmdNextSubpass"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdNextSubpass" vkCmdNextSubpass ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkSubpassContents -- ^ contents
-                                                    -> IO ()
-
-##else
-vkCmdNextSubpass :: VkCommandBuffer -- ^ commandBuffer
-                                    -> VkSubpassContents -- ^ contents
-                                                         -> IO ()
-vkCmdNextSubpass
-  = unsafeDupablePerformIO (vkGetProc @VkCmdNextSubpass)
-
-{-# NOINLINE vkCmdNextSubpass #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkSubpassContents -- ^ contents
-                                                       -> IO ()
-
-##else
-vkCmdNextSubpassSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkSubpassContents -- ^ contents
-                                                          -> IO ()
-vkCmdNextSubpassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdNextSubpass)
-
-{-# NOINLINE vkCmdNextSubpassSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdNextSubpass
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
-type HS_vkCmdNextSubpass =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkSubpassContents -- ^ contents
-                                          -> IO ()
-
-type PFN_vkCmdNextSubpass = FunPtr HS_vkCmdNextSubpass
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdNextSubpass ::
-               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
-
-foreign import ccall safe "dynamic" unwrapVkCmdNextSubpassSafe ::
-               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
-
-instance VulkanProc "vkCmdNextSubpass" where
-        type VkProcType "vkCmdNextSubpass" = HS_vkCmdNextSubpass
-        vkProcSymbol = _VkCmdNextSubpass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdNextSubpass
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdNextSubpassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdEndRenderPass :: CString
-
-pattern VkCmdEndRenderPass <- (is_VkCmdEndRenderPass -> True)
-  where VkCmdEndRenderPass = _VkCmdEndRenderPass
-
-{-# INLINE _VkCmdEndRenderPass #-}
-
-_VkCmdEndRenderPass :: CString
-_VkCmdEndRenderPass = Ptr "vkCmdEndRenderPass\NUL"##
-
-{-# INLINE is_VkCmdEndRenderPass #-}
-
-is_VkCmdEndRenderPass :: CString -> Bool
-is_VkCmdEndRenderPass = (EQ ==) . cmpCStrings _VkCmdEndRenderPass
-
-type VkCmdEndRenderPass = "vkCmdEndRenderPass"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdEndRenderPass" vkCmdEndRenderPass
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> IO ()
-
-##else
-vkCmdEndRenderPass :: VkCommandBuffer -- ^ commandBuffer
-                                      -> IO ()
-vkCmdEndRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkCmdEndRenderPass)
-
-{-# NOINLINE vkCmdEndRenderPass #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdEndRenderPass"
-               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> IO ()
-
-##else
-vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> IO ()
-vkCmdEndRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndRenderPass)
-
-{-# NOINLINE vkCmdEndRenderPassSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdEndRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
-type HS_vkCmdEndRenderPass = VkCommandBuffer -- ^ commandBuffer
-                                             -> IO ()
-
-type PFN_vkCmdEndRenderPass = FunPtr HS_vkCmdEndRenderPass
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdEndRenderPass ::
-               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkCmdEndRenderPassSafe ::
-               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
-
-instance VulkanProc "vkCmdEndRenderPass" where
-        type VkProcType "vkCmdEndRenderPass" = HS_vkCmdEndRenderPass
-        vkProcSymbol = _VkCmdEndRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdEndRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdEndRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdExecuteCommands :: CString
-
-pattern VkCmdExecuteCommands <- (is_VkCmdExecuteCommands -> True)
-  where VkCmdExecuteCommands = _VkCmdExecuteCommands
-
-{-# INLINE _VkCmdExecuteCommands #-}
-
-_VkCmdExecuteCommands :: CString
-_VkCmdExecuteCommands = Ptr "vkCmdExecuteCommands\NUL"##
-
-{-# INLINE is_VkCmdExecuteCommands #-}
-
-is_VkCmdExecuteCommands :: CString -> Bool
-is_VkCmdExecuteCommands
-  = (EQ ==) . cmpCStrings _VkCmdExecuteCommands
-
-type VkCmdExecuteCommands = "vkCmdExecuteCommands"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdExecuteCommands"
-               vkCmdExecuteCommands ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-##else
-vkCmdExecuteCommands ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Word32 -- ^ commandBufferCount
-                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                      -> IO ()
-vkCmdExecuteCommands
-  = unsafeDupablePerformIO (vkGetProc @VkCmdExecuteCommands)
-
-{-# NOINLINE vkCmdExecuteCommands #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdExecuteCommands"
-               vkCmdExecuteCommandsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-##else
-vkCmdExecuteCommandsSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-vkCmdExecuteCommandsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdExecuteCommands)
-
-{-# NOINLINE vkCmdExecuteCommandsSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdExecuteCommands
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
-type HS_vkCmdExecuteCommands =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ commandBufferCount
-                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                      -> IO ()
-
-type PFN_vkCmdExecuteCommands = FunPtr HS_vkCmdExecuteCommands
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdExecuteCommands ::
-               PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
-
-foreign import ccall safe "dynamic" unwrapVkCmdExecuteCommandsSafe
-               :: PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
-
-instance VulkanProc "vkCmdExecuteCommands" where
-        type VkProcType "vkCmdExecuteCommands" = HS_vkCmdExecuteCommands
-        vkProcSymbol = _VkCmdExecuteCommands
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdExecuteCommands
-
-        {-# INLINE unwrapVkProcPtr #-}
+        PFN_vkCreateInstance, vkCreateInstance, vkCreateInstanceUnsafe,
+        vkCreateInstanceSafe, VkDestroyInstance, pattern VkDestroyInstance,
+        HS_vkDestroyInstance, PFN_vkDestroyInstance, vkDestroyInstance,
+        vkDestroyInstanceUnsafe, vkDestroyInstanceSafe,
+        VkEnumeratePhysicalDevices, pattern VkEnumeratePhysicalDevices,
+        HS_vkEnumeratePhysicalDevices, PFN_vkEnumeratePhysicalDevices,
+        vkEnumeratePhysicalDevices, vkEnumeratePhysicalDevicesUnsafe,
+        vkEnumeratePhysicalDevicesSafe, VkGetPhysicalDeviceFeatures,
+        pattern VkGetPhysicalDeviceFeatures,
+        HS_vkGetPhysicalDeviceFeatures, PFN_vkGetPhysicalDeviceFeatures,
+        vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceFeaturesUnsafe,
+        vkGetPhysicalDeviceFeaturesSafe,
+        VkGetPhysicalDeviceFormatProperties,
+        pattern VkGetPhysicalDeviceFormatProperties,
+        HS_vkGetPhysicalDeviceFormatProperties,
+        PFN_vkGetPhysicalDeviceFormatProperties,
+        vkGetPhysicalDeviceFormatProperties,
+        vkGetPhysicalDeviceFormatPropertiesUnsafe,
+        vkGetPhysicalDeviceFormatPropertiesSafe,
+        VkGetPhysicalDeviceImageFormatProperties,
+        pattern VkGetPhysicalDeviceImageFormatProperties,
+        HS_vkGetPhysicalDeviceImageFormatProperties,
+        PFN_vkGetPhysicalDeviceImageFormatProperties,
+        vkGetPhysicalDeviceImageFormatProperties,
+        vkGetPhysicalDeviceImageFormatPropertiesUnsafe,
+        vkGetPhysicalDeviceImageFormatPropertiesSafe,
+        VkGetPhysicalDeviceProperties,
+        pattern VkGetPhysicalDeviceProperties,
+        HS_vkGetPhysicalDeviceProperties,
+        PFN_vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceProperties,
+        vkGetPhysicalDevicePropertiesUnsafe,
+        vkGetPhysicalDevicePropertiesSafe,
+        VkGetPhysicalDeviceQueueFamilyProperties,
+        pattern VkGetPhysicalDeviceQueueFamilyProperties,
+        HS_vkGetPhysicalDeviceQueueFamilyProperties,
+        PFN_vkGetPhysicalDeviceQueueFamilyProperties,
+        vkGetPhysicalDeviceQueueFamilyProperties,
+        vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe,
+        vkGetPhysicalDeviceQueueFamilyPropertiesSafe,
+        VkGetPhysicalDeviceMemoryProperties,
+        pattern VkGetPhysicalDeviceMemoryProperties,
+        HS_vkGetPhysicalDeviceMemoryProperties,
+        PFN_vkGetPhysicalDeviceMemoryProperties,
+        vkGetPhysicalDeviceMemoryProperties,
+        vkGetPhysicalDeviceMemoryPropertiesUnsafe,
+        vkGetPhysicalDeviceMemoryPropertiesSafe, VkGetInstanceProcAddr,
+        pattern VkGetInstanceProcAddr, HS_vkGetInstanceProcAddr,
+        PFN_vkGetInstanceProcAddr, vkGetInstanceProcAddr,
+        vkGetInstanceProcAddrUnsafe, vkGetInstanceProcAddrSafe,
+        VkGetDeviceProcAddr, pattern VkGetDeviceProcAddr,
+        HS_vkGetDeviceProcAddr, PFN_vkGetDeviceProcAddr,
+        vkGetDeviceProcAddr, vkGetDeviceProcAddrUnsafe,
+        vkGetDeviceProcAddrSafe, module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.Format,
+        module Graphics.Vulkan.Types.Enum.Image,
+        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
+        module Graphics.Vulkan.Types.Enum.Memory,
+        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
+        module Graphics.Vulkan.Types.Enum.Queue,
+        module Graphics.Vulkan.Types.Enum.Result,
+        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.StructureType,
+        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
+        module Graphics.Vulkan.Types.Funcpointers,
+        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
+        module Graphics.Vulkan.Types.Struct.ApplicationInfo,
+        module Graphics.Vulkan.Types.Struct.Extent,
+        module Graphics.Vulkan.Types.Struct.FormatProperties,
+        module Graphics.Vulkan.Types.Struct.Image,
+        module Graphics.Vulkan.Types.Struct.InstanceCreateInfo,
+        module Graphics.Vulkan.Types.Struct.Memory,
+        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
+        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
+        -- ** Device commands
+        VkCreateDevice, pattern VkCreateDevice, HS_vkCreateDevice,
+        PFN_vkCreateDevice, vkCreateDevice, vkCreateDeviceUnsafe,
+        vkCreateDeviceSafe, VkDestroyDevice, pattern VkDestroyDevice,
+        HS_vkDestroyDevice, PFN_vkDestroyDevice, vkDestroyDevice,
+        vkDestroyDeviceUnsafe, vkDestroyDeviceSafe,
+        module Graphics.Vulkan.Types.Enum.Device,
+        module Graphics.Vulkan.Types.Struct.Device,
+        -- ** Extension discovery commands
+        VkEnumerateInstanceExtensionProperties,
+        pattern VkEnumerateInstanceExtensionProperties,
+        HS_vkEnumerateInstanceExtensionProperties,
+        PFN_vkEnumerateInstanceExtensionProperties,
+        vkEnumerateInstanceExtensionProperties,
+        vkEnumerateInstanceExtensionPropertiesUnsafe,
+        vkEnumerateInstanceExtensionPropertiesSafe,
+        VkEnumerateDeviceExtensionProperties,
+        pattern VkEnumerateDeviceExtensionProperties,
+        HS_vkEnumerateDeviceExtensionProperties,
+        PFN_vkEnumerateDeviceExtensionProperties,
+        vkEnumerateDeviceExtensionProperties,
+        vkEnumerateDeviceExtensionPropertiesUnsafe,
+        vkEnumerateDeviceExtensionPropertiesSafe,
+        module Graphics.Vulkan.Types.Struct.ExtensionProperties,
+        -- ** Layer discovery commands
+        VkEnumerateInstanceLayerProperties,
+        pattern VkEnumerateInstanceLayerProperties,
+        HS_vkEnumerateInstanceLayerProperties,
+        PFN_vkEnumerateInstanceLayerProperties,
+        vkEnumerateInstanceLayerProperties,
+        vkEnumerateInstanceLayerPropertiesUnsafe,
+        vkEnumerateInstanceLayerPropertiesSafe,
+        VkEnumerateDeviceLayerProperties,
+        pattern VkEnumerateDeviceLayerProperties,
+        HS_vkEnumerateDeviceLayerProperties,
+        PFN_vkEnumerateDeviceLayerProperties,
+        vkEnumerateDeviceLayerProperties,
+        vkEnumerateDeviceLayerPropertiesUnsafe,
+        vkEnumerateDeviceLayerPropertiesSafe,
+        module Graphics.Vulkan.Types.Struct.LayerProperties,
+        -- ** queue commands
+        VkGetDeviceQueue, pattern VkGetDeviceQueue, HS_vkGetDeviceQueue,
+        PFN_vkGetDeviceQueue, vkGetDeviceQueue, vkGetDeviceQueueUnsafe,
+        vkGetDeviceQueueSafe, VkQueueSubmit, pattern VkQueueSubmit,
+        HS_vkQueueSubmit, PFN_vkQueueSubmit, vkQueueSubmit,
+        vkQueueSubmitUnsafe, vkQueueSubmitSafe, VkQueueWaitIdle,
+        pattern VkQueueWaitIdle, HS_vkQueueWaitIdle, PFN_vkQueueWaitIdle,
+        vkQueueWaitIdle, vkQueueWaitIdleUnsafe, vkQueueWaitIdleSafe,
+        VkDeviceWaitIdle, pattern VkDeviceWaitIdle, HS_vkDeviceWaitIdle,
+        PFN_vkDeviceWaitIdle, vkDeviceWaitIdle, vkDeviceWaitIdleUnsafe,
+        vkDeviceWaitIdleSafe,
+        module Graphics.Vulkan.Types.Struct.SubmitInfo, -- ** Memory commands
+                                                        VkAllocateMemory,
+        pattern VkAllocateMemory, HS_vkAllocateMemory,
+        PFN_vkAllocateMemory, vkAllocateMemory, vkAllocateMemoryUnsafe,
+        vkAllocateMemorySafe, VkFreeMemory, pattern VkFreeMemory,
+        HS_vkFreeMemory, PFN_vkFreeMemory, vkFreeMemory,
+        vkFreeMemoryUnsafe, vkFreeMemorySafe, VkMapMemory,
+        pattern VkMapMemory, HS_vkMapMemory, PFN_vkMapMemory, vkMapMemory,
+        vkMapMemoryUnsafe, vkMapMemorySafe, VkUnmapMemory,
+        pattern VkUnmapMemory, HS_vkUnmapMemory, PFN_vkUnmapMemory,
+        vkUnmapMemory, vkUnmapMemoryUnsafe, vkUnmapMemorySafe,
+        VkFlushMappedMemoryRanges, pattern VkFlushMappedMemoryRanges,
+        HS_vkFlushMappedMemoryRanges, PFN_vkFlushMappedMemoryRanges,
+        vkFlushMappedMemoryRanges, vkFlushMappedMemoryRangesUnsafe,
+        vkFlushMappedMemoryRangesSafe, VkInvalidateMappedMemoryRanges,
+        pattern VkInvalidateMappedMemoryRanges,
+        HS_vkInvalidateMappedMemoryRanges,
+        PFN_vkInvalidateMappedMemoryRanges, vkInvalidateMappedMemoryRanges,
+        vkInvalidateMappedMemoryRangesUnsafe,
+        vkInvalidateMappedMemoryRangesSafe, VkGetDeviceMemoryCommitment,
+        pattern VkGetDeviceMemoryCommitment,
+        HS_vkGetDeviceMemoryCommitment, PFN_vkGetDeviceMemoryCommitment,
+        vkGetDeviceMemoryCommitment, vkGetDeviceMemoryCommitmentUnsafe,
+        vkGetDeviceMemoryCommitmentSafe,
+        module Graphics.Vulkan.Types.Struct.MappedMemoryRange,
+        -- ** Memory management API commands
+        VkBindBufferMemory, pattern VkBindBufferMemory,
+        HS_vkBindBufferMemory, PFN_vkBindBufferMemory, vkBindBufferMemory,
+        vkBindBufferMemoryUnsafe, vkBindBufferMemorySafe,
+        VkBindImageMemory, pattern VkBindImageMemory, HS_vkBindImageMemory,
+        PFN_vkBindImageMemory, vkBindImageMemory, vkBindImageMemoryUnsafe,
+        vkBindImageMemorySafe, VkGetBufferMemoryRequirements,
+        pattern VkGetBufferMemoryRequirements,
+        HS_vkGetBufferMemoryRequirements,
+        PFN_vkGetBufferMemoryRequirements, vkGetBufferMemoryRequirements,
+        vkGetBufferMemoryRequirementsUnsafe,
+        vkGetBufferMemoryRequirementsSafe, VkGetImageMemoryRequirements,
+        pattern VkGetImageMemoryRequirements,
+        HS_vkGetImageMemoryRequirements, PFN_vkGetImageMemoryRequirements,
+        vkGetImageMemoryRequirements, vkGetImageMemoryRequirementsUnsafe,
+        vkGetImageMemoryRequirementsSafe,
+        -- ** Sparse resource memory management API commands
+        VkGetImageSparseMemoryRequirements,
+        pattern VkGetImageSparseMemoryRequirements,
+        HS_vkGetImageSparseMemoryRequirements,
+        PFN_vkGetImageSparseMemoryRequirements,
+        vkGetImageSparseMemoryRequirements,
+        vkGetImageSparseMemoryRequirementsUnsafe,
+        vkGetImageSparseMemoryRequirementsSafe,
+        VkGetPhysicalDeviceSparseImageFormatProperties,
+        pattern VkGetPhysicalDeviceSparseImageFormatProperties,
+        HS_vkGetPhysicalDeviceSparseImageFormatProperties,
+        PFN_vkGetPhysicalDeviceSparseImageFormatProperties,
+        vkGetPhysicalDeviceSparseImageFormatProperties,
+        vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe,
+        vkGetPhysicalDeviceSparseImageFormatPropertiesSafe,
+        VkQueueBindSparse, pattern VkQueueBindSparse, HS_vkQueueBindSparse,
+        PFN_vkQueueBindSparse, vkQueueBindSparse, vkQueueBindSparseUnsafe,
+        vkQueueBindSparseSafe, module Graphics.Vulkan.Types.Enum.Sparse,
+        module Graphics.Vulkan.Types.Struct.Bind,
+        module Graphics.Vulkan.Types.Struct.Offset,
+        module Graphics.Vulkan.Types.Struct.Sparse, -- ** Fence commands
+                                                    VkCreateFence,
+        pattern VkCreateFence, HS_vkCreateFence, PFN_vkCreateFence,
+        vkCreateFence, vkCreateFenceUnsafe, vkCreateFenceSafe,
+        VkDestroyFence, pattern VkDestroyFence, HS_vkDestroyFence,
+        PFN_vkDestroyFence, vkDestroyFence, vkDestroyFenceUnsafe,
+        vkDestroyFenceSafe, VkResetFences, pattern VkResetFences,
+        HS_vkResetFences, PFN_vkResetFences, vkResetFences,
+        vkResetFencesUnsafe, vkResetFencesSafe, VkGetFenceStatus,
+        pattern VkGetFenceStatus, HS_vkGetFenceStatus,
+        PFN_vkGetFenceStatus, vkGetFenceStatus, vkGetFenceStatusUnsafe,
+        vkGetFenceStatusSafe, VkWaitForFences, pattern VkWaitForFences,
+        HS_vkWaitForFences, PFN_vkWaitForFences, vkWaitForFences,
+        vkWaitForFencesUnsafe, vkWaitForFencesSafe,
+        module Graphics.Vulkan.Types.Enum.Fence,
+        module Graphics.Vulkan.Types.Struct.Fence, -- ** Queue semaphore commands
+                                                   VkCreateSemaphore,
+        pattern VkCreateSemaphore, HS_vkCreateSemaphore,
+        PFN_vkCreateSemaphore, vkCreateSemaphore, vkCreateSemaphoreUnsafe,
+        vkCreateSemaphoreSafe, VkDestroySemaphore,
+        pattern VkDestroySemaphore, HS_vkDestroySemaphore,
+        PFN_vkDestroySemaphore, vkDestroySemaphore,
+        vkDestroySemaphoreUnsafe, vkDestroySemaphoreSafe,
+        module Graphics.Vulkan.Types.Struct.Semaphore, -- ** Event commands
+                                                       VkCreateEvent,
+        pattern VkCreateEvent, HS_vkCreateEvent, PFN_vkCreateEvent,
+        vkCreateEvent, vkCreateEventUnsafe, vkCreateEventSafe,
+        VkDestroyEvent, pattern VkDestroyEvent, HS_vkDestroyEvent,
+        PFN_vkDestroyEvent, vkDestroyEvent, vkDestroyEventUnsafe,
+        vkDestroyEventSafe, VkGetEventStatus, pattern VkGetEventStatus,
+        HS_vkGetEventStatus, PFN_vkGetEventStatus, vkGetEventStatus,
+        vkGetEventStatusUnsafe, vkGetEventStatusSafe, VkSetEvent,
+        pattern VkSetEvent, HS_vkSetEvent, PFN_vkSetEvent, vkSetEvent,
+        vkSetEventUnsafe, vkSetEventSafe, VkResetEvent,
+        pattern VkResetEvent, HS_vkResetEvent, PFN_vkResetEvent,
+        vkResetEvent, vkResetEventUnsafe, vkResetEventSafe,
+        module Graphics.Vulkan.Types.Struct.EventCreateInfo,
+        -- ** Query commands
+        VkCreateQueryPool, pattern VkCreateQueryPool, HS_vkCreateQueryPool,
+        PFN_vkCreateQueryPool, vkCreateQueryPool, vkCreateQueryPoolUnsafe,
+        vkCreateQueryPoolSafe, VkDestroyQueryPool,
+        pattern VkDestroyQueryPool, HS_vkDestroyQueryPool,
+        PFN_vkDestroyQueryPool, vkDestroyQueryPool,
+        vkDestroyQueryPoolUnsafe, vkDestroyQueryPoolSafe,
+        VkGetQueryPoolResults, pattern VkGetQueryPoolResults,
+        HS_vkGetQueryPoolResults, PFN_vkGetQueryPoolResults,
+        vkGetQueryPoolResults, vkGetQueryPoolResultsUnsafe,
+        vkGetQueryPoolResultsSafe, module Graphics.Vulkan.Types.Enum.Query,
+        module Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo,
+        -- ** Buffer commands
+        VkCreateBuffer, pattern VkCreateBuffer, HS_vkCreateBuffer,
+        PFN_vkCreateBuffer, vkCreateBuffer, vkCreateBufferUnsafe,
+        vkCreateBufferSafe, VkDestroyBuffer, pattern VkDestroyBuffer,
+        HS_vkDestroyBuffer, PFN_vkDestroyBuffer, vkDestroyBuffer,
+        vkDestroyBufferUnsafe, vkDestroyBufferSafe,
+        module Graphics.Vulkan.Types.Enum.Buffer,
+        module Graphics.Vulkan.Types.Enum.SharingMode,
+        module Graphics.Vulkan.Types.Struct.Buffer, -- ** Buffer view commands
+                                                    VkCreateBufferView,
+        pattern VkCreateBufferView, HS_vkCreateBufferView,
+        PFN_vkCreateBufferView, vkCreateBufferView,
+        vkCreateBufferViewUnsafe, vkCreateBufferViewSafe,
+        VkDestroyBufferView, pattern VkDestroyBufferView,
+        HS_vkDestroyBufferView, PFN_vkDestroyBufferView,
+        vkDestroyBufferView, vkDestroyBufferViewUnsafe,
+        vkDestroyBufferViewSafe, -- ** Image commands
+                                 VkCreateImage, pattern VkCreateImage,
+        HS_vkCreateImage, PFN_vkCreateImage, vkCreateImage,
+        vkCreateImageUnsafe, vkCreateImageSafe, VkDestroyImage,
+        pattern VkDestroyImage, HS_vkDestroyImage, PFN_vkDestroyImage,
+        vkDestroyImage, vkDestroyImageUnsafe, vkDestroyImageSafe,
+        VkGetImageSubresourceLayout, pattern VkGetImageSubresourceLayout,
+        HS_vkGetImageSubresourceLayout, PFN_vkGetImageSubresourceLayout,
+        vkGetImageSubresourceLayout, vkGetImageSubresourceLayoutUnsafe,
+        vkGetImageSubresourceLayoutSafe,
+        module Graphics.Vulkan.Types.Struct.SubresourceLayout,
+        -- ** Image view commands
+        VkCreateImageView, pattern VkCreateImageView, HS_vkCreateImageView,
+        PFN_vkCreateImageView, vkCreateImageView, vkCreateImageViewUnsafe,
+        vkCreateImageViewSafe, VkDestroyImageView,
+        pattern VkDestroyImageView, HS_vkDestroyImageView,
+        PFN_vkDestroyImageView, vkDestroyImageView,
+        vkDestroyImageViewUnsafe, vkDestroyImageViewSafe,
+        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
+        module Graphics.Vulkan.Types.Struct.ComponentMapping,
+        -- ** Shader commands
+        VkCreateShaderModule, pattern VkCreateShaderModule,
+        HS_vkCreateShaderModule, PFN_vkCreateShaderModule,
+        vkCreateShaderModule, vkCreateShaderModuleUnsafe,
+        vkCreateShaderModuleSafe, VkDestroyShaderModule,
+        pattern VkDestroyShaderModule, HS_vkDestroyShaderModule,
+        PFN_vkDestroyShaderModule, vkDestroyShaderModule,
+        vkDestroyShaderModuleUnsafe, vkDestroyShaderModuleSafe,
+        module Graphics.Vulkan.Types.Struct.Shader, -- ** Pipeline Cache commands
+                                                    VkCreatePipelineCache,
+        pattern VkCreatePipelineCache, HS_vkCreatePipelineCache,
+        PFN_vkCreatePipelineCache, vkCreatePipelineCache,
+        vkCreatePipelineCacheUnsafe, vkCreatePipelineCacheSafe,
+        VkDestroyPipelineCache, pattern VkDestroyPipelineCache,
+        HS_vkDestroyPipelineCache, PFN_vkDestroyPipelineCache,
+        vkDestroyPipelineCache, vkDestroyPipelineCacheUnsafe,
+        vkDestroyPipelineCacheSafe, VkGetPipelineCacheData,
+        pattern VkGetPipelineCacheData, HS_vkGetPipelineCacheData,
+        PFN_vkGetPipelineCacheData, vkGetPipelineCacheData,
+        vkGetPipelineCacheDataUnsafe, vkGetPipelineCacheDataSafe,
+        VkMergePipelineCaches, pattern VkMergePipelineCaches,
+        HS_vkMergePipelineCaches, PFN_vkMergePipelineCaches,
+        vkMergePipelineCaches, vkMergePipelineCachesUnsafe,
+        vkMergePipelineCachesSafe,
+        module Graphics.Vulkan.Types.Struct.Pipeline,
+        -- ** Pipeline commands
+        VkCreateGraphicsPipelines, pattern VkCreateGraphicsPipelines,
+        HS_vkCreateGraphicsPipelines, PFN_vkCreateGraphicsPipelines,
+        vkCreateGraphicsPipelines, vkCreateGraphicsPipelinesUnsafe,
+        vkCreateGraphicsPipelinesSafe, VkCreateComputePipelines,
+        pattern VkCreateComputePipelines, HS_vkCreateComputePipelines,
+        PFN_vkCreateComputePipelines, vkCreateComputePipelines,
+        vkCreateComputePipelinesUnsafe, vkCreateComputePipelinesSafe,
+        VkDestroyPipeline, pattern VkDestroyPipeline, HS_vkDestroyPipeline,
+        PFN_vkDestroyPipeline, vkDestroyPipeline, vkDestroyPipelineUnsafe,
+        vkDestroyPipelineSafe, module Graphics.Vulkan.Types.Enum.Blend,
+        module Graphics.Vulkan.Types.Enum.Color,
+        module Graphics.Vulkan.Types.Enum.CompareOp,
+        module Graphics.Vulkan.Types.Enum.CullModeFlags,
+        module Graphics.Vulkan.Types.Enum.DynamicState,
+        module Graphics.Vulkan.Types.Enum.FrontFace,
+        module Graphics.Vulkan.Types.Enum.LogicOp,
+        module Graphics.Vulkan.Types.Enum.PolygonMode,
+        module Graphics.Vulkan.Types.Enum.PrimitiveTopology,
+        module Graphics.Vulkan.Types.Enum.Shader,
+        module Graphics.Vulkan.Types.Enum.Stencil,
+        module Graphics.Vulkan.Types.Enum.VertexInputRate,
+        module Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo,
+        module Graphics.Vulkan.Types.Struct.Rect,
+        module Graphics.Vulkan.Types.Struct.Specialization,
+        module Graphics.Vulkan.Types.Struct.StencilOpState,
+        module Graphics.Vulkan.Types.Struct.VertexInput,
+        module Graphics.Vulkan.Types.Struct.Viewport,
+        -- ** Pipeline layout commands
+        VkCreatePipelineLayout, pattern VkCreatePipelineLayout,
+        HS_vkCreatePipelineLayout, PFN_vkCreatePipelineLayout,
+        vkCreatePipelineLayout, vkCreatePipelineLayoutUnsafe,
+        vkCreatePipelineLayoutSafe, VkDestroyPipelineLayout,
+        pattern VkDestroyPipelineLayout, HS_vkDestroyPipelineLayout,
+        PFN_vkDestroyPipelineLayout, vkDestroyPipelineLayout,
+        vkDestroyPipelineLayoutUnsafe, vkDestroyPipelineLayoutSafe,
+        module Graphics.Vulkan.Types.Struct.PushConstantRange,
+        -- ** Sampler commands
+        VkCreateSampler, pattern VkCreateSampler, HS_vkCreateSampler,
+        PFN_vkCreateSampler, vkCreateSampler, vkCreateSamplerUnsafe,
+        vkCreateSamplerSafe, VkDestroySampler, pattern VkDestroySampler,
+        HS_vkDestroySampler, PFN_vkDestroySampler, vkDestroySampler,
+        vkDestroySamplerUnsafe, vkDestroySamplerSafe,
+        module Graphics.Vulkan.Types.Enum.BorderColor,
+        module Graphics.Vulkan.Types.Enum.Filter,
+        module Graphics.Vulkan.Types.Enum.Sampler,
+        module Graphics.Vulkan.Types.Struct.Sampler,
+        -- ** Descriptor set commands
+        VkCreateDescriptorSetLayout, pattern VkCreateDescriptorSetLayout,
+        HS_vkCreateDescriptorSetLayout, PFN_vkCreateDescriptorSetLayout,
+        vkCreateDescriptorSetLayout, vkCreateDescriptorSetLayoutUnsafe,
+        vkCreateDescriptorSetLayoutSafe, VkDestroyDescriptorSetLayout,
+        pattern VkDestroyDescriptorSetLayout,
+        HS_vkDestroyDescriptorSetLayout, PFN_vkDestroyDescriptorSetLayout,
+        vkDestroyDescriptorSetLayout, vkDestroyDescriptorSetLayoutUnsafe,
+        vkDestroyDescriptorSetLayoutSafe, VkCreateDescriptorPool,
+        pattern VkCreateDescriptorPool, HS_vkCreateDescriptorPool,
+        PFN_vkCreateDescriptorPool, vkCreateDescriptorPool,
+        vkCreateDescriptorPoolUnsafe, vkCreateDescriptorPoolSafe,
+        VkDestroyDescriptorPool, pattern VkDestroyDescriptorPool,
+        HS_vkDestroyDescriptorPool, PFN_vkDestroyDescriptorPool,
+        vkDestroyDescriptorPool, vkDestroyDescriptorPoolUnsafe,
+        vkDestroyDescriptorPoolSafe, VkResetDescriptorPool,
+        pattern VkResetDescriptorPool, HS_vkResetDescriptorPool,
+        PFN_vkResetDescriptorPool, vkResetDescriptorPool,
+        vkResetDescriptorPoolUnsafe, vkResetDescriptorPoolSafe,
+        VkAllocateDescriptorSets, pattern VkAllocateDescriptorSets,
+        HS_vkAllocateDescriptorSets, PFN_vkAllocateDescriptorSets,
+        vkAllocateDescriptorSets, vkAllocateDescriptorSetsUnsafe,
+        vkAllocateDescriptorSetsSafe, VkFreeDescriptorSets,
+        pattern VkFreeDescriptorSets, HS_vkFreeDescriptorSets,
+        PFN_vkFreeDescriptorSets, vkFreeDescriptorSets,
+        vkFreeDescriptorSetsUnsafe, vkFreeDescriptorSetsSafe,
+        VkUpdateDescriptorSets, pattern VkUpdateDescriptorSets,
+        HS_vkUpdateDescriptorSets, PFN_vkUpdateDescriptorSets,
+        vkUpdateDescriptorSets, vkUpdateDescriptorSetsUnsafe,
+        vkUpdateDescriptorSetsSafe,
+        module Graphics.Vulkan.Types.Enum.Descriptor,
+        module Graphics.Vulkan.Types.Struct.CopyDescriptorSet,
+        module Graphics.Vulkan.Types.Struct.Descriptor,
+        module Graphics.Vulkan.Types.Struct.WriteDescriptorSet,
+        -- ** Pass commands
+        VkCreateFramebuffer, pattern VkCreateFramebuffer,
+        HS_vkCreateFramebuffer, PFN_vkCreateFramebuffer,
+        vkCreateFramebuffer, vkCreateFramebufferUnsafe,
+        vkCreateFramebufferSafe, VkDestroyFramebuffer,
+        pattern VkDestroyFramebuffer, HS_vkDestroyFramebuffer,
+        PFN_vkDestroyFramebuffer, vkDestroyFramebuffer,
+        vkDestroyFramebufferUnsafe, vkDestroyFramebufferSafe,
+        VkCreateRenderPass, pattern VkCreateRenderPass,
+        HS_vkCreateRenderPass, PFN_vkCreateRenderPass, vkCreateRenderPass,
+        vkCreateRenderPassUnsafe, vkCreateRenderPassSafe,
+        VkDestroyRenderPass, pattern VkDestroyRenderPass,
+        HS_vkDestroyRenderPass, PFN_vkDestroyRenderPass,
+        vkDestroyRenderPass, vkDestroyRenderPassUnsafe,
+        vkDestroyRenderPassSafe, VkGetRenderAreaGranularity,
+        pattern VkGetRenderAreaGranularity, HS_vkGetRenderAreaGranularity,
+        PFN_vkGetRenderAreaGranularity, vkGetRenderAreaGranularity,
+        vkGetRenderAreaGranularityUnsafe, vkGetRenderAreaGranularitySafe,
+        module Graphics.Vulkan.Types.Enum.AccessFlags,
+        module Graphics.Vulkan.Types.Enum.Attachment,
+        module Graphics.Vulkan.Types.Enum.DependencyFlags,
+        module Graphics.Vulkan.Types.Enum.Subpass,
+        module Graphics.Vulkan.Types.Struct.Attachment,
+        module Graphics.Vulkan.Types.Struct.FramebufferCreateInfo,
+        module Graphics.Vulkan.Types.Struct.RenderPass,
+        module Graphics.Vulkan.Types.Struct.Subpass, -- ** Command pool commands
+                                                     VkCreateCommandPool,
+        pattern VkCreateCommandPool, HS_vkCreateCommandPool,
+        PFN_vkCreateCommandPool, vkCreateCommandPool,
+        vkCreateCommandPoolUnsafe, vkCreateCommandPoolSafe,
+        VkDestroyCommandPool, pattern VkDestroyCommandPool,
+        HS_vkDestroyCommandPool, PFN_vkDestroyCommandPool,
+        vkDestroyCommandPool, vkDestroyCommandPoolUnsafe,
+        vkDestroyCommandPoolSafe, VkResetCommandPool,
+        pattern VkResetCommandPool, HS_vkResetCommandPool,
+        PFN_vkResetCommandPool, vkResetCommandPool,
+        vkResetCommandPoolUnsafe, vkResetCommandPoolSafe,
+        module Graphics.Vulkan.Types.Enum.Command,
+        module Graphics.Vulkan.Types.Struct.Command,
+        -- ** Command buffer commands
+        VkAllocateCommandBuffers, pattern VkAllocateCommandBuffers,
+        HS_vkAllocateCommandBuffers, PFN_vkAllocateCommandBuffers,
+        vkAllocateCommandBuffers, vkAllocateCommandBuffersUnsafe,
+        vkAllocateCommandBuffersSafe, VkFreeCommandBuffers,
+        pattern VkFreeCommandBuffers, HS_vkFreeCommandBuffers,
+        PFN_vkFreeCommandBuffers, vkFreeCommandBuffers,
+        vkFreeCommandBuffersUnsafe, vkFreeCommandBuffersSafe,
+        VkBeginCommandBuffer, pattern VkBeginCommandBuffer,
+        HS_vkBeginCommandBuffer, PFN_vkBeginCommandBuffer,
+        vkBeginCommandBuffer, vkBeginCommandBufferUnsafe,
+        vkBeginCommandBufferSafe, VkEndCommandBuffer,
+        pattern VkEndCommandBuffer, HS_vkEndCommandBuffer,
+        PFN_vkEndCommandBuffer, vkEndCommandBuffer,
+        vkEndCommandBufferUnsafe, vkEndCommandBufferSafe,
+        VkResetCommandBuffer, pattern VkResetCommandBuffer,
+        HS_vkResetCommandBuffer, PFN_vkResetCommandBuffer,
+        vkResetCommandBuffer, vkResetCommandBufferUnsafe,
+        vkResetCommandBufferSafe, -- ** Command buffer building commands
+                                  VkCmdBindPipeline,
+        pattern VkCmdBindPipeline, HS_vkCmdBindPipeline,
+        PFN_vkCmdBindPipeline, vkCmdBindPipeline, vkCmdBindPipelineUnsafe,
+        vkCmdBindPipelineSafe, VkCmdSetViewport, pattern VkCmdSetViewport,
+        HS_vkCmdSetViewport, PFN_vkCmdSetViewport, vkCmdSetViewport,
+        vkCmdSetViewportUnsafe, vkCmdSetViewportSafe, VkCmdSetScissor,
+        pattern VkCmdSetScissor, HS_vkCmdSetScissor, PFN_vkCmdSetScissor,
+        vkCmdSetScissor, vkCmdSetScissorUnsafe, vkCmdSetScissorSafe,
+        VkCmdSetLineWidth, pattern VkCmdSetLineWidth, HS_vkCmdSetLineWidth,
+        PFN_vkCmdSetLineWidth, vkCmdSetLineWidth, vkCmdSetLineWidthUnsafe,
+        vkCmdSetLineWidthSafe, VkCmdSetDepthBias,
+        pattern VkCmdSetDepthBias, HS_vkCmdSetDepthBias,
+        PFN_vkCmdSetDepthBias, vkCmdSetDepthBias, vkCmdSetDepthBiasUnsafe,
+        vkCmdSetDepthBiasSafe, VkCmdSetBlendConstants,
+        pattern VkCmdSetBlendConstants, HS_vkCmdSetBlendConstants,
+        PFN_vkCmdSetBlendConstants, vkCmdSetBlendConstants,
+        vkCmdSetBlendConstantsUnsafe, vkCmdSetBlendConstantsSafe,
+        VkCmdSetDepthBounds, pattern VkCmdSetDepthBounds,
+        HS_vkCmdSetDepthBounds, PFN_vkCmdSetDepthBounds,
+        vkCmdSetDepthBounds, vkCmdSetDepthBoundsUnsafe,
+        vkCmdSetDepthBoundsSafe, VkCmdSetStencilCompareMask,
+        pattern VkCmdSetStencilCompareMask, HS_vkCmdSetStencilCompareMask,
+        PFN_vkCmdSetStencilCompareMask, vkCmdSetStencilCompareMask,
+        vkCmdSetStencilCompareMaskUnsafe, vkCmdSetStencilCompareMaskSafe,
+        VkCmdSetStencilWriteMask, pattern VkCmdSetStencilWriteMask,
+        HS_vkCmdSetStencilWriteMask, PFN_vkCmdSetStencilWriteMask,
+        vkCmdSetStencilWriteMask, vkCmdSetStencilWriteMaskUnsafe,
+        vkCmdSetStencilWriteMaskSafe, VkCmdSetStencilReference,
+        pattern VkCmdSetStencilReference, HS_vkCmdSetStencilReference,
+        PFN_vkCmdSetStencilReference, vkCmdSetStencilReference,
+        vkCmdSetStencilReferenceUnsafe, vkCmdSetStencilReferenceSafe,
+        VkCmdBindDescriptorSets, pattern VkCmdBindDescriptorSets,
+        HS_vkCmdBindDescriptorSets, PFN_vkCmdBindDescriptorSets,
+        vkCmdBindDescriptorSets, vkCmdBindDescriptorSetsUnsafe,
+        vkCmdBindDescriptorSetsSafe, VkCmdBindIndexBuffer,
+        pattern VkCmdBindIndexBuffer, HS_vkCmdBindIndexBuffer,
+        PFN_vkCmdBindIndexBuffer, vkCmdBindIndexBuffer,
+        vkCmdBindIndexBufferUnsafe, vkCmdBindIndexBufferSafe,
+        VkCmdBindVertexBuffers, pattern VkCmdBindVertexBuffers,
+        HS_vkCmdBindVertexBuffers, PFN_vkCmdBindVertexBuffers,
+        vkCmdBindVertexBuffers, vkCmdBindVertexBuffersUnsafe,
+        vkCmdBindVertexBuffersSafe, VkCmdDraw, pattern VkCmdDraw,
+        HS_vkCmdDraw, PFN_vkCmdDraw, vkCmdDraw, vkCmdDrawUnsafe,
+        vkCmdDrawSafe, VkCmdDrawIndexed, pattern VkCmdDrawIndexed,
+        HS_vkCmdDrawIndexed, PFN_vkCmdDrawIndexed, vkCmdDrawIndexed,
+        vkCmdDrawIndexedUnsafe, vkCmdDrawIndexedSafe, VkCmdDrawIndirect,
+        pattern VkCmdDrawIndirect, HS_vkCmdDrawIndirect,
+        PFN_vkCmdDrawIndirect, vkCmdDrawIndirect, vkCmdDrawIndirectUnsafe,
+        vkCmdDrawIndirectSafe, VkCmdDrawIndexedIndirect,
+        pattern VkCmdDrawIndexedIndirect, HS_vkCmdDrawIndexedIndirect,
+        PFN_vkCmdDrawIndexedIndirect, vkCmdDrawIndexedIndirect,
+        vkCmdDrawIndexedIndirectUnsafe, vkCmdDrawIndexedIndirectSafe,
+        VkCmdDispatch, pattern VkCmdDispatch, HS_vkCmdDispatch,
+        PFN_vkCmdDispatch, vkCmdDispatch, vkCmdDispatchUnsafe,
+        vkCmdDispatchSafe, VkCmdDispatchIndirect,
+        pattern VkCmdDispatchIndirect, HS_vkCmdDispatchIndirect,
+        PFN_vkCmdDispatchIndirect, vkCmdDispatchIndirect,
+        vkCmdDispatchIndirectUnsafe, vkCmdDispatchIndirectSafe,
+        VkCmdCopyBuffer, pattern VkCmdCopyBuffer, HS_vkCmdCopyBuffer,
+        PFN_vkCmdCopyBuffer, vkCmdCopyBuffer, vkCmdCopyBufferUnsafe,
+        vkCmdCopyBufferSafe, VkCmdCopyImage, pattern VkCmdCopyImage,
+        HS_vkCmdCopyImage, PFN_vkCmdCopyImage, vkCmdCopyImage,
+        vkCmdCopyImageUnsafe, vkCmdCopyImageSafe, VkCmdBlitImage,
+        pattern VkCmdBlitImage, HS_vkCmdBlitImage, PFN_vkCmdBlitImage,
+        vkCmdBlitImage, vkCmdBlitImageUnsafe, vkCmdBlitImageSafe,
+        VkCmdCopyBufferToImage, pattern VkCmdCopyBufferToImage,
+        HS_vkCmdCopyBufferToImage, PFN_vkCmdCopyBufferToImage,
+        vkCmdCopyBufferToImage, vkCmdCopyBufferToImageUnsafe,
+        vkCmdCopyBufferToImageSafe, VkCmdCopyImageToBuffer,
+        pattern VkCmdCopyImageToBuffer, HS_vkCmdCopyImageToBuffer,
+        PFN_vkCmdCopyImageToBuffer, vkCmdCopyImageToBuffer,
+        vkCmdCopyImageToBufferUnsafe, vkCmdCopyImageToBufferSafe,
+        VkCmdUpdateBuffer, pattern VkCmdUpdateBuffer, HS_vkCmdUpdateBuffer,
+        PFN_vkCmdUpdateBuffer, vkCmdUpdateBuffer, vkCmdUpdateBufferUnsafe,
+        vkCmdUpdateBufferSafe, VkCmdFillBuffer, pattern VkCmdFillBuffer,
+        HS_vkCmdFillBuffer, PFN_vkCmdFillBuffer, vkCmdFillBuffer,
+        vkCmdFillBufferUnsafe, vkCmdFillBufferSafe, VkCmdClearColorImage,
+        pattern VkCmdClearColorImage, HS_vkCmdClearColorImage,
+        PFN_vkCmdClearColorImage, vkCmdClearColorImage,
+        vkCmdClearColorImageUnsafe, vkCmdClearColorImageSafe,
+        VkCmdClearDepthStencilImage, pattern VkCmdClearDepthStencilImage,
+        HS_vkCmdClearDepthStencilImage, PFN_vkCmdClearDepthStencilImage,
+        vkCmdClearDepthStencilImage, vkCmdClearDepthStencilImageUnsafe,
+        vkCmdClearDepthStencilImageSafe, VkCmdClearAttachments,
+        pattern VkCmdClearAttachments, HS_vkCmdClearAttachments,
+        PFN_vkCmdClearAttachments, vkCmdClearAttachments,
+        vkCmdClearAttachmentsUnsafe, vkCmdClearAttachmentsSafe,
+        VkCmdResolveImage, pattern VkCmdResolveImage, HS_vkCmdResolveImage,
+        PFN_vkCmdResolveImage, vkCmdResolveImage, vkCmdResolveImageUnsafe,
+        vkCmdResolveImageSafe, VkCmdSetEvent, pattern VkCmdSetEvent,
+        HS_vkCmdSetEvent, PFN_vkCmdSetEvent, vkCmdSetEvent,
+        vkCmdSetEventUnsafe, vkCmdSetEventSafe, VkCmdResetEvent,
+        pattern VkCmdResetEvent, HS_vkCmdResetEvent, PFN_vkCmdResetEvent,
+        vkCmdResetEvent, vkCmdResetEventUnsafe, vkCmdResetEventSafe,
+        VkCmdWaitEvents, pattern VkCmdWaitEvents, HS_vkCmdWaitEvents,
+        PFN_vkCmdWaitEvents, vkCmdWaitEvents, vkCmdWaitEventsUnsafe,
+        vkCmdWaitEventsSafe, VkCmdPipelineBarrier,
+        pattern VkCmdPipelineBarrier, HS_vkCmdPipelineBarrier,
+        PFN_vkCmdPipelineBarrier, vkCmdPipelineBarrier,
+        vkCmdPipelineBarrierUnsafe, vkCmdPipelineBarrierSafe,
+        VkCmdBeginQuery, pattern VkCmdBeginQuery, HS_vkCmdBeginQuery,
+        PFN_vkCmdBeginQuery, vkCmdBeginQuery, vkCmdBeginQueryUnsafe,
+        vkCmdBeginQuerySafe, VkCmdEndQuery, pattern VkCmdEndQuery,
+        HS_vkCmdEndQuery, PFN_vkCmdEndQuery, vkCmdEndQuery,
+        vkCmdEndQueryUnsafe, vkCmdEndQuerySafe, VkCmdResetQueryPool,
+        pattern VkCmdResetQueryPool, HS_vkCmdResetQueryPool,
+        PFN_vkCmdResetQueryPool, vkCmdResetQueryPool,
+        vkCmdResetQueryPoolUnsafe, vkCmdResetQueryPoolSafe,
+        VkCmdWriteTimestamp, pattern VkCmdWriteTimestamp,
+        HS_vkCmdWriteTimestamp, PFN_vkCmdWriteTimestamp,
+        vkCmdWriteTimestamp, vkCmdWriteTimestampUnsafe,
+        vkCmdWriteTimestampSafe, VkCmdCopyQueryPoolResults,
+        pattern VkCmdCopyQueryPoolResults, HS_vkCmdCopyQueryPoolResults,
+        PFN_vkCmdCopyQueryPoolResults, vkCmdCopyQueryPoolResults,
+        vkCmdCopyQueryPoolResultsUnsafe, vkCmdCopyQueryPoolResultsSafe,
+        VkCmdPushConstants, pattern VkCmdPushConstants,
+        HS_vkCmdPushConstants, PFN_vkCmdPushConstants, vkCmdPushConstants,
+        vkCmdPushConstantsUnsafe, vkCmdPushConstantsSafe,
+        VkCmdBeginRenderPass, pattern VkCmdBeginRenderPass,
+        HS_vkCmdBeginRenderPass, PFN_vkCmdBeginRenderPass,
+        vkCmdBeginRenderPass, vkCmdBeginRenderPassUnsafe,
+        vkCmdBeginRenderPassSafe, VkCmdNextSubpass,
+        pattern VkCmdNextSubpass, HS_vkCmdNextSubpass,
+        PFN_vkCmdNextSubpass, vkCmdNextSubpass, vkCmdNextSubpassUnsafe,
+        vkCmdNextSubpassSafe, VkCmdEndRenderPass,
+        pattern VkCmdEndRenderPass, HS_vkCmdEndRenderPass,
+        PFN_vkCmdEndRenderPass, vkCmdEndRenderPass,
+        vkCmdEndRenderPassUnsafe, vkCmdEndRenderPassSafe,
+        VkCmdExecuteCommands, pattern VkCmdExecuteCommands,
+        HS_vkCmdExecuteCommands, PFN_vkCmdExecuteCommands,
+        vkCmdExecuteCommands, vkCmdExecuteCommandsUnsafe,
+        vkCmdExecuteCommandsSafe,
+        module Graphics.Vulkan.Types.Enum.IndexType,
+        module Graphics.Vulkan.Types.Struct.Clear,
+        -- ** Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.
+        module Graphics.Vulkan.Types.Struct.Base,
+        module Graphics.Vulkan.Types.Struct.DispatchIndirectCommand,
+        module Graphics.Vulkan.Types.Struct.DrawInd,
+        module Graphics.Vulkan.Types.Enum.Object)
+       where
+import           GHC.Ptr                                                (Ptr (..))
+import           Graphics.Vulkan.Constants                              (pattern VK_ATTACHMENT_UNUSED,
+                                                                         pattern VK_FALSE,
+                                                                         pattern VK_LOD_CLAMP_NONE,
+                                                                         pattern VK_QUEUE_FAMILY_IGNORED,
+                                                                         pattern VK_REMAINING_ARRAY_LAYERS,
+                                                                         pattern VK_REMAINING_MIP_LEVELS,
+                                                                         pattern VK_SUBPASS_EXTERNAL,
+                                                                         pattern VK_TRUE,
+                                                                         pattern VK_WHOLE_SIZE)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Proc
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.AccessFlags
+import           Graphics.Vulkan.Types.Enum.Attachment
+import           Graphics.Vulkan.Types.Enum.Blend
+import           Graphics.Vulkan.Types.Enum.BorderColor
+import           Graphics.Vulkan.Types.Enum.Buffer
+import           Graphics.Vulkan.Types.Enum.Color
+import           Graphics.Vulkan.Types.Enum.Command
+import           Graphics.Vulkan.Types.Enum.CompareOp
+import           Graphics.Vulkan.Types.Enum.ComponentSwizzle
+import           Graphics.Vulkan.Types.Enum.CullModeFlags
+import           Graphics.Vulkan.Types.Enum.DependencyFlags
+import           Graphics.Vulkan.Types.Enum.Descriptor
+import           Graphics.Vulkan.Types.Enum.Device
+import           Graphics.Vulkan.Types.Enum.DynamicState
+import           Graphics.Vulkan.Types.Enum.Fence
+import           Graphics.Vulkan.Types.Enum.Filter
+import           Graphics.Vulkan.Types.Enum.Format
+import           Graphics.Vulkan.Types.Enum.FrontFace
+import           Graphics.Vulkan.Types.Enum.Image
+import           Graphics.Vulkan.Types.Enum.IndexType
+import           Graphics.Vulkan.Types.Enum.InternalAllocationType
+import           Graphics.Vulkan.Types.Enum.LogicOp
+import           Graphics.Vulkan.Types.Enum.Memory
+import           Graphics.Vulkan.Types.Enum.Object
+import           Graphics.Vulkan.Types.Enum.PhysicalDeviceType
+import           Graphics.Vulkan.Types.Enum.Pipeline
+import           Graphics.Vulkan.Types.Enum.PolygonMode
+import           Graphics.Vulkan.Types.Enum.PrimitiveTopology
+import           Graphics.Vulkan.Types.Enum.Query
+import           Graphics.Vulkan.Types.Enum.Queue
+import           Graphics.Vulkan.Types.Enum.Result
+import           Graphics.Vulkan.Types.Enum.SampleCountFlags
+import           Graphics.Vulkan.Types.Enum.Sampler
+import           Graphics.Vulkan.Types.Enum.Shader
+import           Graphics.Vulkan.Types.Enum.SharingMode
+import           Graphics.Vulkan.Types.Enum.Sparse
+import           Graphics.Vulkan.Types.Enum.Stencil
+import           Graphics.Vulkan.Types.Enum.StructureType
+import           Graphics.Vulkan.Types.Enum.Subpass
+import           Graphics.Vulkan.Types.Enum.SystemAllocationScope
+import           Graphics.Vulkan.Types.Enum.VertexInputRate
+import           Graphics.Vulkan.Types.Funcpointers
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.AllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.ApplicationInfo
+import           Graphics.Vulkan.Types.Struct.Attachment
+import           Graphics.Vulkan.Types.Struct.Base
+import           Graphics.Vulkan.Types.Struct.Bind
+import           Graphics.Vulkan.Types.Struct.Buffer
+import           Graphics.Vulkan.Types.Struct.Clear
+import           Graphics.Vulkan.Types.Struct.Command
+import           Graphics.Vulkan.Types.Struct.ComponentMapping
+import           Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo
+import           Graphics.Vulkan.Types.Struct.CopyDescriptorSet
+import           Graphics.Vulkan.Types.Struct.Descriptor
+import           Graphics.Vulkan.Types.Struct.Device
+import           Graphics.Vulkan.Types.Struct.DispatchIndirectCommand
+import           Graphics.Vulkan.Types.Struct.DrawInd
+import           Graphics.Vulkan.Types.Struct.EventCreateInfo
+import           Graphics.Vulkan.Types.Struct.ExtensionProperties
+import           Graphics.Vulkan.Types.Struct.Extent
+import           Graphics.Vulkan.Types.Struct.Fence
+import           Graphics.Vulkan.Types.Struct.FormatProperties
+import           Graphics.Vulkan.Types.Struct.FramebufferCreateInfo
+import           Graphics.Vulkan.Types.Struct.Image
+import           Graphics.Vulkan.Types.Struct.InstanceCreateInfo
+import           Graphics.Vulkan.Types.Struct.LayerProperties
+import           Graphics.Vulkan.Types.Struct.MappedMemoryRange
+import           Graphics.Vulkan.Types.Struct.Memory
+import           Graphics.Vulkan.Types.Struct.Offset
+import           Graphics.Vulkan.Types.Struct.PhysicalDevice
+import           Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
+import           Graphics.Vulkan.Types.Struct.Pipeline
+import           Graphics.Vulkan.Types.Struct.PushConstantRange
+import           Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo
+import           Graphics.Vulkan.Types.Struct.QueueFamilyProperties
+import           Graphics.Vulkan.Types.Struct.Rect
+import           Graphics.Vulkan.Types.Struct.RenderPass
+import           Graphics.Vulkan.Types.Struct.Sampler
+import           Graphics.Vulkan.Types.Struct.Semaphore
+import           Graphics.Vulkan.Types.Struct.Shader
+import           Graphics.Vulkan.Types.Struct.Sparse
+import           Graphics.Vulkan.Types.Struct.Specialization
+import           Graphics.Vulkan.Types.Struct.StencilOpState
+import           Graphics.Vulkan.Types.Struct.SubmitInfo
+import           Graphics.Vulkan.Types.Struct.Subpass
+import           Graphics.Vulkan.Types.Struct.SubresourceLayout
+import           Graphics.Vulkan.Types.Struct.VertexInput
+import           Graphics.Vulkan.Types.Struct.Viewport
+import           Graphics.Vulkan.Types.Struct.WriteDescriptorSet
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+pattern VkCreateInstance :: CString
+
+pattern VkCreateInstance <- (is_VkCreateInstance -> True)
+  where VkCreateInstance = _VkCreateInstance
+
+{-# INLINE _VkCreateInstance #-}
+
+_VkCreateInstance :: CString
+_VkCreateInstance = Ptr "vkCreateInstance\NUL"##
+
+{-# INLINE is_VkCreateInstance #-}
+
+is_VkCreateInstance :: CString -> Bool
+is_VkCreateInstance = (EQ ==) . cmpCStrings _VkCreateInstance
+
+type VkCreateInstance = "vkCreateInstance"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
+--           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateInstance"
+               vkCreateInstanceUnsafe ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+##else
+vkCreateInstanceUnsafe ::
+                       Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                                ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkInstance -- ^ pInstance
+                                                                     -> IO VkResult
+vkCreateInstanceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateInstance)
+
+{-# NOINLINE vkCreateInstanceUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
+--           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
+               ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+##else
+vkCreateInstanceSafe ::
+                     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                              ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkInstance -- ^ pInstance
+                                                                   -> IO VkResult
+vkCreateInstanceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateInstance)
+
+{-# NOINLINE vkCreateInstanceSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
+--           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
+--
+vkCreateInstance ::
+                 Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkInstance -- ^ pInstance
+                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateInstance = vkCreateInstanceUnsafe
+##else
+vkCreateInstance = vkCreateInstanceSafe
+
+##endif
+{-# INLINE vkCreateInstance #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+--   > VkResult vkCreateInstance
+--   >     ( const VkInstanceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkInstance* pInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+type HS_vkCreateInstance =
+     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                              ->
+       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                 -> Ptr VkInstance -- ^ pInstance
+                                                   -> IO VkResult
+
+type PFN_vkCreateInstance = FunPtr HS_vkCreateInstance
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateInstanceUnsafe
+               :: PFN_vkCreateInstance -> HS_vkCreateInstance
+
+foreign import ccall safe "dynamic" unwrapVkCreateInstanceSafe ::
+               PFN_vkCreateInstance -> HS_vkCreateInstance
+
+instance VulkanProc "vkCreateInstance" where
+        type VkProcType "vkCreateInstance" = HS_vkCreateInstance
+        vkProcSymbol = _VkCreateInstance
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateInstanceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateInstanceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyInstance :: CString
+
+pattern VkDestroyInstance <- (is_VkDestroyInstance -> True)
+  where VkDestroyInstance = _VkDestroyInstance
+
+{-# INLINE _VkDestroyInstance #-}
+
+_VkDestroyInstance :: CString
+_VkDestroyInstance = Ptr "vkDestroyInstance\NUL"##
+
+{-# INLINE is_VkDestroyInstance #-}
+
+is_VkDestroyInstance :: CString -> Bool
+is_VkDestroyInstance = (EQ ==) . cmpCStrings _VkDestroyInstance
+
+type VkDestroyInstance = "vkDestroyInstance"
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
+--           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyInstance"
+               vkDestroyInstanceUnsafe ::
+               VkInstance -- ^ instance
+                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> IO ()
+
+##else
+vkDestroyInstanceUnsafe ::
+                        VkInstance -- ^ instance
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+vkDestroyInstanceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyInstance)
+
+{-# NOINLINE vkDestroyInstanceUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
+--           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
+               :: VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+##else
+vkDestroyInstanceSafe ::
+                      VkInstance -- ^ instance
+                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> IO ()
+vkDestroyInstanceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyInstance)
+
+{-# NOINLINE vkDestroyInstanceSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
+--           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
+--
+vkDestroyInstance ::
+                  VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyInstance = vkDestroyInstanceUnsafe
+##else
+vkDestroyInstance = vkDestroyInstanceSafe
+
+##endif
+{-# INLINE vkDestroyInstance #-}
+
+-- | > void vkDestroyInstance
+--   >     ( VkInstance instance
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+type HS_vkDestroyInstance =
+     VkInstance -- ^ instance
+                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> IO ()
+
+type PFN_vkDestroyInstance = FunPtr HS_vkDestroyInstance
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyInstanceUnsafe
+               :: PFN_vkDestroyInstance -> HS_vkDestroyInstance
+
+foreign import ccall safe "dynamic" unwrapVkDestroyInstanceSafe ::
+               PFN_vkDestroyInstance -> HS_vkDestroyInstance
+
+instance VulkanProc "vkDestroyInstance" where
+        type VkProcType "vkDestroyInstance" = HS_vkDestroyInstance
+        vkProcSymbol = _VkDestroyInstance
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyInstanceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyInstanceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumeratePhysicalDevices :: CString
+
+pattern VkEnumeratePhysicalDevices <-
+        (is_VkEnumeratePhysicalDevices -> True)
+  where VkEnumeratePhysicalDevices = _VkEnumeratePhysicalDevices
+
+{-# INLINE _VkEnumeratePhysicalDevices #-}
+
+_VkEnumeratePhysicalDevices :: CString
+_VkEnumeratePhysicalDevices = Ptr "vkEnumeratePhysicalDevices\NUL"##
+
+{-# INLINE is_VkEnumeratePhysicalDevices #-}
+
+is_VkEnumeratePhysicalDevices :: CString -> Bool
+is_VkEnumeratePhysicalDevices
+  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDevices
+
+type VkEnumeratePhysicalDevices = "vkEnumeratePhysicalDevices"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
+--           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevicesUnsafe ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+##else
+vkEnumeratePhysicalDevicesUnsafe ::
+                                 VkInstance -- ^ instance
+                                            -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                          -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                                  -> IO VkResult
+vkEnumeratePhysicalDevicesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumeratePhysicalDevices)
+
+{-# NOINLINE vkEnumeratePhysicalDevicesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
+--           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevicesSafe ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+##else
+vkEnumeratePhysicalDevicesSafe ::
+                               VkInstance -- ^ instance
+                                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                                -> IO VkResult
+vkEnumeratePhysicalDevicesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumeratePhysicalDevices)
+
+{-# NOINLINE vkEnumeratePhysicalDevicesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
+--           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
+--
+vkEnumeratePhysicalDevices ::
+                           VkInstance -- ^ instance
+                                      -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                    -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                            -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevicesUnsafe
+##else
+vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevicesSafe
+
+##endif
+{-# INLINE vkEnumeratePhysicalDevices #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkEnumeratePhysicalDevices
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceCount
+--   >     , VkPhysicalDevice* pPhysicalDevices
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+type HS_vkEnumeratePhysicalDevices =
+     VkInstance -- ^ instance
+                -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                              -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                      -> IO VkResult
+
+type PFN_vkEnumeratePhysicalDevices =
+     FunPtr HS_vkEnumeratePhysicalDevices
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumeratePhysicalDevicesUnsafe ::
+               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDevicesSafe ::
+               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
+
+instance VulkanProc "vkEnumeratePhysicalDevices" where
+        type VkProcType "vkEnumeratePhysicalDevices" =
+             HS_vkEnumeratePhysicalDevices
+        vkProcSymbol = _VkEnumeratePhysicalDevices
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkEnumeratePhysicalDevicesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDevicesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFeatures :: CString
+
+pattern VkGetPhysicalDeviceFeatures <-
+        (is_VkGetPhysicalDeviceFeatures -> True)
+  where VkGetPhysicalDeviceFeatures = _VkGetPhysicalDeviceFeatures
+
+{-# INLINE _VkGetPhysicalDeviceFeatures #-}
+
+_VkGetPhysicalDeviceFeatures :: CString
+_VkGetPhysicalDeviceFeatures
+  = Ptr "vkGetPhysicalDeviceFeatures\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceFeatures #-}
+
+is_VkGetPhysicalDeviceFeatures :: CString -> Bool
+is_VkGetPhysicalDeviceFeatures
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures
+
+type VkGetPhysicalDeviceFeatures = "vkGetPhysicalDeviceFeatures"
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
+--           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeaturesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+##else
+vkGetPhysicalDeviceFeaturesUnsafe ::
+                                  VkPhysicalDevice -- ^ physicalDevice
+                                                   -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                                   -> IO ()
+vkGetPhysicalDeviceFeaturesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFeatures)
+
+{-# NOINLINE vkGetPhysicalDeviceFeaturesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
+--           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeaturesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+##else
+vkGetPhysicalDeviceFeaturesSafe ::
+                                VkPhysicalDevice -- ^ physicalDevice
+                                                 -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                                 -> IO ()
+vkGetPhysicalDeviceFeaturesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFeatures)
+
+{-# NOINLINE vkGetPhysicalDeviceFeaturesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
+--           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
+--
+vkGetPhysicalDeviceFeatures ::
+                            VkPhysicalDevice -- ^ physicalDevice
+                                             -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeaturesUnsafe
+##else
+vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeaturesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceFeatures #-}
+
+-- | > void vkGetPhysicalDeviceFeatures
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFeatures =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                      -> IO ()
+
+type PFN_vkGetPhysicalDeviceFeatures =
+     FunPtr HS_vkGetPhysicalDeviceFeatures
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFeaturesUnsafe ::
+               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeaturesSafe ::
+               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
+
+instance VulkanProc "vkGetPhysicalDeviceFeatures" where
+        type VkProcType "vkGetPhysicalDeviceFeatures" =
+             HS_vkGetPhysicalDeviceFeatures
+        vkProcSymbol = _VkGetPhysicalDeviceFeatures
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeaturesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeaturesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceFormatProperties <-
+        (is_VkGetPhysicalDeviceFormatProperties -> True)
+  where VkGetPhysicalDeviceFormatProperties
+          = _VkGetPhysicalDeviceFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceFormatProperties #-}
+
+_VkGetPhysicalDeviceFormatProperties :: CString
+_VkGetPhysicalDeviceFormatProperties
+  = Ptr "vkGetPhysicalDeviceFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceFormatProperties #-}
+
+is_VkGetPhysicalDeviceFormatProperties :: CString -> Bool
+is_VkGetPhysicalDeviceFormatProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties
+
+type VkGetPhysicalDeviceFormatProperties =
+     "vkGetPhysicalDeviceFormatProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+##else
+vkGetPhysicalDeviceFormatPropertiesUnsafe ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            VkFormat -- ^ format
+                                                     -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceFormatPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+##else
+vkGetPhysicalDeviceFormatPropertiesSafe ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          VkFormat -- ^ format
+                                                   -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                             -> IO ()
+vkGetPhysicalDeviceFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
+--
+vkGetPhysicalDeviceFormatProperties ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     -> VkFormat -- ^ format
+                                                                 -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFormatProperties
+  = vkGetPhysicalDeviceFormatPropertiesUnsafe
+##else
+vkGetPhysicalDeviceFormatProperties
+  = vkGetPhysicalDeviceFormatPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceFormatProperties #-}
+
+-- | > void vkGetPhysicalDeviceFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> VkFormat -- ^ format
+                                  -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                            -> IO ()
+
+type PFN_vkGetPhysicalDeviceFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties ->
+                 HS_vkGetPhysicalDeviceFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties ->
+                 HS_vkGetPhysicalDeviceFormatProperties
+
+instance VulkanProc "vkGetPhysicalDeviceFormatProperties" where
+        type VkProcType "vkGetPhysicalDeviceFormatProperties" =
+             HS_vkGetPhysicalDeviceFormatProperties
+        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceFormatPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFormatPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceImageFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceImageFormatProperties <-
+        (is_VkGetPhysicalDeviceImageFormatProperties -> True)
+  where VkGetPhysicalDeviceImageFormatProperties
+          = _VkGetPhysicalDeviceImageFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceImageFormatProperties #-}
+
+_VkGetPhysicalDeviceImageFormatProperties :: CString
+_VkGetPhysicalDeviceImageFormatProperties
+  = Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties #-}
+
+is_VkGetPhysicalDeviceImageFormatProperties :: CString -> Bool
+is_VkGetPhysicalDeviceImageFormatProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties
+
+type VkGetPhysicalDeviceImageFormatProperties =
+     "vkGetPhysicalDeviceImageFormatProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+##else
+vkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 VkFormat -- ^ format
+                                                          ->
+                                                   VkImageType -- ^ type
+                                                               ->
+                                                     VkImageTiling -- ^ tiling
+                                                                   ->
+                                                       VkImageUsageFlags -- ^ usage
+                                                                         ->
+                                                         VkImageCreateFlags -- ^ flags
+                                                                            ->
+                                                           Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                       ->
+                                                             IO VkResult
+vkGetPhysicalDeviceImageFormatPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+##else
+vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               VkFormat -- ^ format
+                                                        ->
+                                                 VkImageType -- ^ type
+                                                             ->
+                                                   VkImageTiling -- ^ tiling
+                                                                 ->
+                                                     VkImageUsageFlags -- ^ usage
+                                                                       ->
+                                                       VkImageCreateFlags -- ^ flags
+                                                                          ->
+                                                         Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                     -> IO VkResult
+vkGetPhysicalDeviceImageFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
+--
+vkGetPhysicalDeviceImageFormatProperties ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           VkFormat -- ^ format
+                                                    ->
+                                             VkImageType -- ^ type
+                                                         ->
+                                               VkImageTiling -- ^ tiling
+                                                             ->
+                                                 VkImageUsageFlags -- ^ usage
+                                                                   ->
+                                                   VkImageCreateFlags -- ^ flags
+                                                                      ->
+                                                     Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceImageFormatProperties
+  = vkGetPhysicalDeviceImageFormatPropertiesUnsafe
+##else
+vkGetPhysicalDeviceImageFormatProperties
+  = vkGetPhysicalDeviceImageFormatPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceImageFormatProperties #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceImageFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkImageTiling tiling
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageCreateFlags flags
+--   >     , VkImageFormatProperties* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceImageFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkFormat -- ^ format
+                ->
+         VkImageType -- ^ type
+                     ->
+           VkImageTiling -- ^ tiling
+                         ->
+             VkImageUsageFlags -- ^ usage
+                               ->
+               VkImageCreateFlags -- ^ flags
+                                  -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                 -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceImageFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties
+
+instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceImageFormatProperties" =
+             HS_vkGetPhysicalDeviceImageFormatProperties
+        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceImageFormatPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceProperties :: CString
+
+pattern VkGetPhysicalDeviceProperties <-
+        (is_VkGetPhysicalDeviceProperties -> True)
+  where VkGetPhysicalDeviceProperties
+          = _VkGetPhysicalDeviceProperties
+
+{-# INLINE _VkGetPhysicalDeviceProperties #-}
+
+_VkGetPhysicalDeviceProperties :: CString
+_VkGetPhysicalDeviceProperties
+  = Ptr "vkGetPhysicalDeviceProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceProperties #-}
+
+is_VkGetPhysicalDeviceProperties :: CString -> Bool
+is_VkGetPhysicalDeviceProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties
+
+type VkGetPhysicalDeviceProperties =
+     "vkGetPhysicalDeviceProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
+--           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDevicePropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+##else
+vkGetPhysicalDevicePropertiesUnsafe ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                       -> IO ()
+vkGetPhysicalDevicePropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceProperties)
+
+{-# NOINLINE vkGetPhysicalDevicePropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
+--           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDevicePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+##else
+vkGetPhysicalDevicePropertiesSafe ::
+                                  VkPhysicalDevice -- ^ physicalDevice
+                                                   -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                     -> IO ()
+vkGetPhysicalDevicePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceProperties)
+
+{-# NOINLINE vkGetPhysicalDevicePropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
+--           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
+--
+vkGetPhysicalDeviceProperties ::
+                              VkPhysicalDevice -- ^ physicalDevice
+                                               -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceProperties = vkGetPhysicalDevicePropertiesUnsafe
+##else
+vkGetPhysicalDeviceProperties = vkGetPhysicalDevicePropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceProperties #-}
+
+-- | > void vkGetPhysicalDeviceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                        -> IO ()
+
+type PFN_vkGetPhysicalDeviceProperties =
+     FunPtr HS_vkGetPhysicalDeviceProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDevicePropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceProperties ->
+                 HS_vkGetPhysicalDeviceProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDevicePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceProperties ->
+                 HS_vkGetPhysicalDeviceProperties
+
+instance VulkanProc "vkGetPhysicalDeviceProperties" where
+        type VkProcType "vkGetPhysicalDeviceProperties" =
+             HS_vkGetPhysicalDeviceProperties
+        vkProcSymbol = _VkGetPhysicalDeviceProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDevicePropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDevicePropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties :: CString
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties <-
+        (is_VkGetPhysicalDeviceQueueFamilyProperties -> True)
+  where VkGetPhysicalDeviceQueueFamilyProperties
+          = _VkGetPhysicalDeviceQueueFamilyProperties
+
+{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties #-}
+
+_VkGetPhysicalDeviceQueueFamilyProperties :: CString
+_VkGetPhysicalDeviceQueueFamilyProperties
+  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties #-}
+
+is_VkGetPhysicalDeviceQueueFamilyProperties :: CString -> Bool
+is_VkGetPhysicalDeviceQueueFamilyProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties
+
+type VkGetPhysicalDeviceQueueFamilyProperties =
+     "vkGetPhysicalDeviceQueueFamilyProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceQueueFamilyProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                          -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceQueueFamilyPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
+--
+vkGetPhysicalDeviceQueueFamilyProperties ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                      -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceQueueFamilyProperties
+  = vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
+##else
+vkGetPhysicalDeviceQueueFamilyProperties
+  = vkGetPhysicalDeviceQueueFamilyPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties #-}
+
+-- | > void vkGetPhysicalDeviceQueueFamilyProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceQueueFamilyProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                  -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                 -> IO ()
+
+type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
+     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties" =
+             HS_vkGetPhysicalDeviceQueueFamilyProperties
+        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceMemoryProperties :: CString
+
+pattern VkGetPhysicalDeviceMemoryProperties <-
+        (is_VkGetPhysicalDeviceMemoryProperties -> True)
+  where VkGetPhysicalDeviceMemoryProperties
+          = _VkGetPhysicalDeviceMemoryProperties
+
+{-# INLINE _VkGetPhysicalDeviceMemoryProperties #-}
+
+_VkGetPhysicalDeviceMemoryProperties :: CString
+_VkGetPhysicalDeviceMemoryProperties
+  = Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceMemoryProperties #-}
+
+is_VkGetPhysicalDeviceMemoryProperties :: CString -> Bool
+is_VkGetPhysicalDeviceMemoryProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties
+
+type VkGetPhysicalDeviceMemoryProperties =
+     "vkGetPhysicalDeviceMemoryProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
+--           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+##else
+vkGetPhysicalDeviceMemoryPropertiesUnsafe ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceMemoryPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceMemoryProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
+--           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+##else
+vkGetPhysicalDeviceMemoryPropertiesSafe ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceMemoryPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
+--           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
+--
+vkGetPhysicalDeviceMemoryProperties ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     ->
+                                      Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceMemoryProperties
+  = vkGetPhysicalDeviceMemoryPropertiesUnsafe
+##else
+vkGetPhysicalDeviceMemoryProperties
+  = vkGetPhysicalDeviceMemoryPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceMemoryProperties #-}
+
+-- | > void vkGetPhysicalDeviceMemoryProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceMemoryProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                              -> IO ()
+
+type PFN_vkGetPhysicalDeviceMemoryProperties =
+     FunPtr HS_vkGetPhysicalDeviceMemoryProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties ->
+                 HS_vkGetPhysicalDeviceMemoryProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties ->
+                 HS_vkGetPhysicalDeviceMemoryProperties
+
+instance VulkanProc "vkGetPhysicalDeviceMemoryProperties" where
+        type VkProcType "vkGetPhysicalDeviceMemoryProperties" =
+             HS_vkGetPhysicalDeviceMemoryProperties
+        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceMemoryPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceMemoryPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetInstanceProcAddr :: CString
+
+pattern VkGetInstanceProcAddr <- (is_VkGetInstanceProcAddr -> True)
+  where VkGetInstanceProcAddr = _VkGetInstanceProcAddr
+
+{-# INLINE _VkGetInstanceProcAddr #-}
+
+_VkGetInstanceProcAddr :: CString
+_VkGetInstanceProcAddr = Ptr "vkGetInstanceProcAddr\NUL"##
+
+{-# INLINE is_VkGetInstanceProcAddr #-}
+
+is_VkGetInstanceProcAddr :: CString -> Bool
+is_VkGetInstanceProcAddr
+  = (EQ ==) . cmpCStrings _VkGetInstanceProcAddr
+
+type VkGetInstanceProcAddr = "vkGetInstanceProcAddr"
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
+--           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddrUnsafe ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+##else
+vkGetInstanceProcAddrUnsafe ::
+                            VkInstance -- ^ instance
+                                       -> CString -- ^ pName
+                                                  -> IO PFN_vkVoidFunction
+vkGetInstanceProcAddrUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetInstanceProcAddr)
+
+{-# NOINLINE vkGetInstanceProcAddrUnsafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
+--           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddrSafe ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+##else
+vkGetInstanceProcAddrSafe ::
+                          VkInstance -- ^ instance
+                                     -> CString -- ^ pName
+                                                -> IO PFN_vkVoidFunction
+vkGetInstanceProcAddrSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetInstanceProcAddr)
+
+{-# NOINLINE vkGetInstanceProcAddrSafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
+--           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
+--
+vkGetInstanceProcAddr ::
+                      VkInstance -- ^ instance
+                                 -> CString -- ^ pName
+                                            -> IO PFN_vkVoidFunction
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetInstanceProcAddr = vkGetInstanceProcAddrUnsafe
+##else
+vkGetInstanceProcAddr = vkGetInstanceProcAddrSafe
+
+##endif
+{-# INLINE vkGetInstanceProcAddr #-}
+
+-- | > PFN_vkVoidFunction vkGetInstanceProcAddr
+--   >     ( VkInstance instance
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+type HS_vkGetInstanceProcAddr =
+     VkInstance -- ^ instance
+                -> CString -- ^ pName
+                           -> IO PFN_vkVoidFunction
+
+type PFN_vkGetInstanceProcAddr = FunPtr HS_vkGetInstanceProcAddr
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetInstanceProcAddrUnsafe ::
+               PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
+
+foreign import ccall safe "dynamic" unwrapVkGetInstanceProcAddrSafe
+               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
+
+instance VulkanProc "vkGetInstanceProcAddr" where
+        type VkProcType "vkGetInstanceProcAddr" = HS_vkGetInstanceProcAddr
+        vkProcSymbol = _VkGetInstanceProcAddr
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetInstanceProcAddrUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetInstanceProcAddrSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceProcAddr :: CString
+
+pattern VkGetDeviceProcAddr <- (is_VkGetDeviceProcAddr -> True)
+  where VkGetDeviceProcAddr = _VkGetDeviceProcAddr
+
+{-# INLINE _VkGetDeviceProcAddr #-}
+
+_VkGetDeviceProcAddr :: CString
+_VkGetDeviceProcAddr = Ptr "vkGetDeviceProcAddr\NUL"##
+
+{-# INLINE is_VkGetDeviceProcAddr #-}
+
+is_VkGetDeviceProcAddr :: CString -> Bool
+is_VkGetDeviceProcAddr = (EQ ==) . cmpCStrings _VkGetDeviceProcAddr
+
+type VkGetDeviceProcAddr = "vkGetDeviceProcAddr"
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
+--           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddrUnsafe ::
+               VkDevice -- ^ device
+                        -> CString -- ^ pName
+                                   -> IO PFN_vkVoidFunction
+
+##else
+vkGetDeviceProcAddrUnsafe ::
+                          VkDevice -- ^ device
+                                   -> CString -- ^ pName
+                                              -> IO PFN_vkVoidFunction
+vkGetDeviceProcAddrUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceProcAddr)
+
+{-# NOINLINE vkGetDeviceProcAddrUnsafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
+--           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddrSafe ::
+               VkDevice -- ^ device
+                        -> CString -- ^ pName
+                                   -> IO PFN_vkVoidFunction
+
+##else
+vkGetDeviceProcAddrSafe ::
+                        VkDevice -- ^ device
+                                 -> CString -- ^ pName
+                                            -> IO PFN_vkVoidFunction
+vkGetDeviceProcAddrSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceProcAddr)
+
+{-# NOINLINE vkGetDeviceProcAddrSafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
+--           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
+--
+vkGetDeviceProcAddr :: VkDevice -- ^ device
+                                -> CString -- ^ pName
+                                           -> IO PFN_vkVoidFunction
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceProcAddr = vkGetDeviceProcAddrUnsafe
+##else
+vkGetDeviceProcAddr = vkGetDeviceProcAddrSafe
+
+##endif
+{-# INLINE vkGetDeviceProcAddr #-}
+
+-- | > PFN_vkVoidFunction vkGetDeviceProcAddr
+--   >     ( VkDevice device
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+type HS_vkGetDeviceProcAddr =
+     VkDevice -- ^ device
+              -> CString -- ^ pName
+                         -> IO PFN_vkVoidFunction
+
+type PFN_vkGetDeviceProcAddr = FunPtr HS_vkGetDeviceProcAddr
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceProcAddrUnsafe ::
+               PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceProcAddrSafe
+               :: PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
+
+instance VulkanProc "vkGetDeviceProcAddr" where
+        type VkProcType "vkGetDeviceProcAddr" = HS_vkGetDeviceProcAddr
+        vkProcSymbol = _VkGetDeviceProcAddr
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceProcAddrUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceProcAddrSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDevice :: CString
+
+pattern VkCreateDevice <- (is_VkCreateDevice -> True)
+  where VkCreateDevice = _VkCreateDevice
+
+{-# INLINE _VkCreateDevice #-}
+
+_VkCreateDevice :: CString
+_VkCreateDevice = Ptr "vkCreateDevice\NUL"##
+
+{-# INLINE is_VkCreateDevice #-}
+
+is_VkCreateDevice :: CString -> Bool
+is_VkCreateDevice = (EQ ==) . cmpCStrings _VkCreateDevice
+
+type VkCreateDevice = "vkCreateDevice"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
+--           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDevice" vkCreateDeviceUnsafe
+               ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+##else
+vkCreateDeviceUnsafe ::
+                     VkPhysicalDevice -- ^ physicalDevice
+                                      ->
+                       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                              ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkDevice -- ^ pDevice
+                                                                   -> IO VkResult
+vkCreateDeviceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDevice)
+
+{-# NOINLINE vkCreateDeviceUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
+--           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+##else
+vkCreateDeviceSafe ::
+                   VkPhysicalDevice -- ^ physicalDevice
+                                    ->
+                     Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                            ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkDevice -- ^ pDevice
+                                                                 -> IO VkResult
+vkCreateDeviceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDevice)
+
+{-# NOINLINE vkCreateDeviceSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
+--           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
+--
+vkCreateDevice ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateDevice = vkCreateDeviceUnsafe
+##else
+vkCreateDevice = vkCreateDeviceSafe
+
+##endif
+{-# INLINE vkCreateDevice #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkCreateDevice
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkDeviceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDevice* pDevice
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+type HS_vkCreateDevice =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDevice -- ^ pDevice
+                                                   -> IO VkResult
+
+type PFN_vkCreateDevice = FunPtr HS_vkCreateDevice
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateDeviceUnsafe ::
+               PFN_vkCreateDevice -> HS_vkCreateDevice
+
+foreign import ccall safe "dynamic" unwrapVkCreateDeviceSafe ::
+               PFN_vkCreateDevice -> HS_vkCreateDevice
+
+instance VulkanProc "vkCreateDevice" where
+        type VkProcType "vkCreateDevice" = HS_vkCreateDevice
+        vkProcSymbol = _VkCreateDevice
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDeviceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDeviceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDevice :: CString
+
+pattern VkDestroyDevice <- (is_VkDestroyDevice -> True)
+  where VkDestroyDevice = _VkDestroyDevice
+
+{-# INLINE _VkDestroyDevice #-}
+
+_VkDestroyDevice :: CString
+_VkDestroyDevice = Ptr "vkDestroyDevice\NUL"##
+
+{-# INLINE is_VkDestroyDevice #-}
+
+is_VkDestroyDevice :: CString -> Bool
+is_VkDestroyDevice = (EQ ==) . cmpCStrings _VkDestroyDevice
+
+type VkDestroyDevice = "vkDestroyDevice"
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
+--           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDevice" vkDestroyDeviceUnsafe
+               :: VkDevice -- ^ device
+                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> IO ()
+
+##else
+vkDestroyDeviceUnsafe ::
+                      VkDevice -- ^ device
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+vkDestroyDeviceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyDevice)
+
+{-# NOINLINE vkDestroyDeviceUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
+--           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> IO ()
+
+##else
+vkDestroyDeviceSafe ::
+                    VkDevice -- ^ device
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+vkDestroyDeviceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDevice)
+
+{-# NOINLINE vkDestroyDeviceSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
+--           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
+--
+vkDestroyDevice :: VkDevice -- ^ device
+                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDevice = vkDestroyDeviceUnsafe
+##else
+vkDestroyDevice = vkDestroyDeviceSafe
+
+##endif
+{-# INLINE vkDestroyDevice #-}
+
+-- | > void vkDestroyDevice
+--   >     ( VkDevice device
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+type HS_vkDestroyDevice =
+     VkDevice -- ^ device
+              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> IO ()
+
+type PFN_vkDestroyDevice = FunPtr HS_vkDestroyDevice
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyDeviceUnsafe
+               :: PFN_vkDestroyDevice -> HS_vkDestroyDevice
+
+foreign import ccall safe "dynamic" unwrapVkDestroyDeviceSafe ::
+               PFN_vkDestroyDevice -> HS_vkDestroyDevice
+
+instance VulkanProc "vkDestroyDevice" where
+        type VkProcType "vkDestroyDevice" = HS_vkDestroyDevice
+        vkProcSymbol = _VkDestroyDevice
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyDeviceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDeviceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateInstanceExtensionProperties :: CString
+
+pattern VkEnumerateInstanceExtensionProperties <-
+        (is_VkEnumerateInstanceExtensionProperties -> True)
+  where VkEnumerateInstanceExtensionProperties
+          = _VkEnumerateInstanceExtensionProperties
+
+{-# INLINE _VkEnumerateInstanceExtensionProperties #-}
+
+_VkEnumerateInstanceExtensionProperties :: CString
+_VkEnumerateInstanceExtensionProperties
+  = Ptr "vkEnumerateInstanceExtensionProperties\NUL"##
+
+{-# INLINE is_VkEnumerateInstanceExtensionProperties #-}
+
+is_VkEnumerateInstanceExtensionProperties :: CString -> Bool
+is_VkEnumerateInstanceExtensionProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceExtensionProperties
+
+type VkEnumerateInstanceExtensionProperties =
+     "vkEnumerateInstanceExtensionProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
+--           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionPropertiesUnsafe ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+##else
+vkEnumerateInstanceExtensionPropertiesUnsafe ::
+                                             CString -- ^ pLayerName
+                                                     ->
+                                               Ptr Word32 -- ^ pPropertyCount
+                                                          ->
+                                                 Ptr VkExtensionProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateInstanceExtensionPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateInstanceExtensionProperties)
+
+{-# NOINLINE vkEnumerateInstanceExtensionPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
+--           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionPropertiesSafe ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+##else
+vkEnumerateInstanceExtensionPropertiesSafe ::
+                                           CString -- ^ pLayerName
+                                                   ->
+                                             Ptr Word32 -- ^ pPropertyCount
+                                                        -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                     -> IO VkResult
+vkEnumerateInstanceExtensionPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceExtensionProperties)
+
+{-# NOINLINE vkEnumerateInstanceExtensionPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
+--           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
+--
+vkEnumerateInstanceExtensionProperties ::
+                                       CString -- ^ pLayerName
+                                               ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateInstanceExtensionProperties
+  = vkEnumerateInstanceExtensionPropertiesUnsafe
+##else
+vkEnumerateInstanceExtensionProperties
+  = vkEnumerateInstanceExtensionPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateInstanceExtensionProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+--   > VkResult vkEnumerateInstanceExtensionProperties
+--   >     ( const char* pLayerName
+--   >     , uint32_t* pPropertyCount
+--   >     , VkExtensionProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+type HS_vkEnumerateInstanceExtensionProperties =
+     CString -- ^ pLayerName
+             -> Ptr Word32 -- ^ pPropertyCount
+                           -> Ptr VkExtensionProperties -- ^ pProperties
+                                                        -> IO VkResult
+
+type PFN_vkEnumerateInstanceExtensionProperties =
+     FunPtr HS_vkEnumerateInstanceExtensionProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceExtensionPropertiesUnsafe ::
+               PFN_vkEnumerateInstanceExtensionProperties ->
+                 HS_vkEnumerateInstanceExtensionProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceExtensionPropertiesSafe ::
+               PFN_vkEnumerateInstanceExtensionProperties ->
+                 HS_vkEnumerateInstanceExtensionProperties
+
+instance VulkanProc "vkEnumerateInstanceExtensionProperties" where
+        type VkProcType "vkEnumerateInstanceExtensionProperties" =
+             HS_vkEnumerateInstanceExtensionProperties
+        vkProcSymbol = _VkEnumerateInstanceExtensionProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkEnumerateInstanceExtensionPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkEnumerateInstanceExtensionPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateDeviceExtensionProperties :: CString
+
+pattern VkEnumerateDeviceExtensionProperties <-
+        (is_VkEnumerateDeviceExtensionProperties -> True)
+  where VkEnumerateDeviceExtensionProperties
+          = _VkEnumerateDeviceExtensionProperties
+
+{-# INLINE _VkEnumerateDeviceExtensionProperties #-}
+
+_VkEnumerateDeviceExtensionProperties :: CString
+_VkEnumerateDeviceExtensionProperties
+  = Ptr "vkEnumerateDeviceExtensionProperties\NUL"##
+
+{-# INLINE is_VkEnumerateDeviceExtensionProperties #-}
+
+is_VkEnumerateDeviceExtensionProperties :: CString -> Bool
+is_VkEnumerateDeviceExtensionProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateDeviceExtensionProperties
+
+type VkEnumerateDeviceExtensionProperties =
+     "vkEnumerateDeviceExtensionProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
+--           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+##else
+vkEnumerateDeviceExtensionPropertiesUnsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             CString -- ^ pLayerName
+                                                     ->
+                                               Ptr Word32 -- ^ pPropertyCount
+                                                          ->
+                                                 Ptr VkExtensionProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateDeviceExtensionPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateDeviceExtensionProperties)
+
+{-# NOINLINE vkEnumerateDeviceExtensionPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
+--           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+##else
+vkEnumerateDeviceExtensionPropertiesSafe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           CString -- ^ pLayerName
+                                                   ->
+                                             Ptr Word32 -- ^ pPropertyCount
+                                                        -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                     -> IO VkResult
+vkEnumerateDeviceExtensionPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateDeviceExtensionProperties)
+
+{-# NOINLINE vkEnumerateDeviceExtensionPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
+--           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
+--
+vkEnumerateDeviceExtensionProperties ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       CString -- ^ pLayerName
+                                               ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateDeviceExtensionProperties
+  = vkEnumerateDeviceExtensionPropertiesUnsafe
+##else
+vkEnumerateDeviceExtensionProperties
+  = vkEnumerateDeviceExtensionPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateDeviceExtensionProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+--   > VkResult vkEnumerateDeviceExtensionProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const char* pLayerName
+--   >     , uint32_t* pPropertyCount
+--   >     , VkExtensionProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+type HS_vkEnumerateDeviceExtensionProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       CString -- ^ pLayerName
+               -> Ptr Word32 -- ^ pPropertyCount
+                             -> Ptr VkExtensionProperties -- ^ pProperties
+                                                          -> IO VkResult
+
+type PFN_vkEnumerateDeviceExtensionProperties =
+     FunPtr HS_vkEnumerateDeviceExtensionProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateDeviceExtensionPropertiesUnsafe ::
+               PFN_vkEnumerateDeviceExtensionProperties ->
+                 HS_vkEnumerateDeviceExtensionProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateDeviceExtensionPropertiesSafe ::
+               PFN_vkEnumerateDeviceExtensionProperties ->
+                 HS_vkEnumerateDeviceExtensionProperties
+
+instance VulkanProc "vkEnumerateDeviceExtensionProperties" where
+        type VkProcType "vkEnumerateDeviceExtensionProperties" =
+             HS_vkEnumerateDeviceExtensionProperties
+        vkProcSymbol = _VkEnumerateDeviceExtensionProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkEnumerateDeviceExtensionPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkEnumerateDeviceExtensionPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateInstanceLayerProperties :: CString
+
+pattern VkEnumerateInstanceLayerProperties <-
+        (is_VkEnumerateInstanceLayerProperties -> True)
+  where VkEnumerateInstanceLayerProperties
+          = _VkEnumerateInstanceLayerProperties
+
+{-# INLINE _VkEnumerateInstanceLayerProperties #-}
+
+_VkEnumerateInstanceLayerProperties :: CString
+_VkEnumerateInstanceLayerProperties
+  = Ptr "vkEnumerateInstanceLayerProperties\NUL"##
+
+{-# INLINE is_VkEnumerateInstanceLayerProperties #-}
+
+is_VkEnumerateInstanceLayerProperties :: CString -> Bool
+is_VkEnumerateInstanceLayerProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceLayerProperties
+
+type VkEnumerateInstanceLayerProperties =
+     "vkEnumerateInstanceLayerProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
+--           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerPropertiesUnsafe ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+##else
+vkEnumerateInstanceLayerPropertiesUnsafe ::
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkLayerProperties -- ^ pProperties
+                                                                             -> IO VkResult
+vkEnumerateInstanceLayerPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateInstanceLayerProperties)
+
+{-# NOINLINE vkEnumerateInstanceLayerPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
+--           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerPropertiesSafe ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+##else
+vkEnumerateInstanceLayerPropertiesSafe ::
+                                       Ptr Word32 -- ^ pPropertyCount
+                                                  -> Ptr VkLayerProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateInstanceLayerPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceLayerProperties)
+
+{-# NOINLINE vkEnumerateInstanceLayerPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
+--           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
+--
+vkEnumerateInstanceLayerProperties ::
+                                   Ptr Word32 -- ^ pPropertyCount
+                                              -> Ptr VkLayerProperties -- ^ pProperties
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateInstanceLayerProperties
+  = vkEnumerateInstanceLayerPropertiesUnsafe
+##else
+vkEnumerateInstanceLayerProperties
+  = vkEnumerateInstanceLayerPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateInstanceLayerProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEnumerateInstanceLayerProperties
+--   >     ( uint32_t* pPropertyCount
+--   >     , VkLayerProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+type HS_vkEnumerateInstanceLayerProperties =
+     Ptr Word32 -- ^ pPropertyCount
+                -> Ptr VkLayerProperties -- ^ pProperties
+                                         -> IO VkResult
+
+type PFN_vkEnumerateInstanceLayerProperties =
+     FunPtr HS_vkEnumerateInstanceLayerProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceLayerPropertiesUnsafe ::
+               PFN_vkEnumerateInstanceLayerProperties ->
+                 HS_vkEnumerateInstanceLayerProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceLayerPropertiesSafe ::
+               PFN_vkEnumerateInstanceLayerProperties ->
+                 HS_vkEnumerateInstanceLayerProperties
+
+instance VulkanProc "vkEnumerateInstanceLayerProperties" where
+        type VkProcType "vkEnumerateInstanceLayerProperties" =
+             HS_vkEnumerateInstanceLayerProperties
+        vkProcSymbol = _VkEnumerateInstanceLayerProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkEnumerateInstanceLayerPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceLayerPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateDeviceLayerProperties :: CString
+
+pattern VkEnumerateDeviceLayerProperties <-
+        (is_VkEnumerateDeviceLayerProperties -> True)
+  where VkEnumerateDeviceLayerProperties
+          = _VkEnumerateDeviceLayerProperties
+
+{-# INLINE _VkEnumerateDeviceLayerProperties #-}
+
+_VkEnumerateDeviceLayerProperties :: CString
+_VkEnumerateDeviceLayerProperties
+  = Ptr "vkEnumerateDeviceLayerProperties\NUL"##
+
+{-# INLINE is_VkEnumerateDeviceLayerProperties #-}
+
+is_VkEnumerateDeviceLayerProperties :: CString -> Bool
+is_VkEnumerateDeviceLayerProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateDeviceLayerProperties
+
+type VkEnumerateDeviceLayerProperties =
+     "vkEnumerateDeviceLayerProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
+--           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+##else
+vkEnumerateDeviceLayerPropertiesUnsafe ::
+                                       VkPhysicalDevice -- ^ physicalDevice
+                                                        ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkLayerProperties -- ^ pProperties
+                                                                             -> IO VkResult
+vkEnumerateDeviceLayerPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateDeviceLayerProperties)
+
+{-# NOINLINE vkEnumerateDeviceLayerPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
+--           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+##else
+vkEnumerateDeviceLayerPropertiesSafe ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Ptr Word32 -- ^ pPropertyCount
+                                                  -> Ptr VkLayerProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateDeviceLayerPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateDeviceLayerProperties)
+
+{-# NOINLINE vkEnumerateDeviceLayerPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
+--           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
+--
+vkEnumerateDeviceLayerProperties ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  ->
+                                   Ptr Word32 -- ^ pPropertyCount
+                                              -> Ptr VkLayerProperties -- ^ pProperties
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateDeviceLayerProperties
+  = vkEnumerateDeviceLayerPropertiesUnsafe
+##else
+vkEnumerateDeviceLayerProperties
+  = vkEnumerateDeviceLayerPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateDeviceLayerProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEnumerateDeviceLayerProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkLayerProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+type HS_vkEnumerateDeviceLayerProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pPropertyCount
+                  -> Ptr VkLayerProperties -- ^ pProperties
+                                           -> IO VkResult
+
+type PFN_vkEnumerateDeviceLayerProperties =
+     FunPtr HS_vkEnumerateDeviceLayerProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateDeviceLayerPropertiesUnsafe ::
+               PFN_vkEnumerateDeviceLayerProperties ->
+                 HS_vkEnumerateDeviceLayerProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateDeviceLayerPropertiesSafe ::
+               PFN_vkEnumerateDeviceLayerProperties ->
+                 HS_vkEnumerateDeviceLayerProperties
+
+instance VulkanProc "vkEnumerateDeviceLayerProperties" where
+        type VkProcType "vkEnumerateDeviceLayerProperties" =
+             HS_vkEnumerateDeviceLayerProperties
+        vkProcSymbol = _VkEnumerateDeviceLayerProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkEnumerateDeviceLayerPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumerateDeviceLayerPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceQueue :: CString
+
+pattern VkGetDeviceQueue <- (is_VkGetDeviceQueue -> True)
+  where VkGetDeviceQueue = _VkGetDeviceQueue
+
+{-# INLINE _VkGetDeviceQueue #-}
+
+_VkGetDeviceQueue :: CString
+_VkGetDeviceQueue = Ptr "vkGetDeviceQueue\NUL"##
+
+{-# INLINE is_VkGetDeviceQueue #-}
+
+is_VkGetDeviceQueue :: CString -> Bool
+is_VkGetDeviceQueue = (EQ ==) . cmpCStrings _VkGetDeviceQueue
+
+type VkGetDeviceQueue = "vkGetDeviceQueue"
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
+--           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceQueue"
+               vkGetDeviceQueueUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ queueFamilyIndex
+                                  -> Word32 -- ^ queueIndex
+                                            -> Ptr VkQueue -- ^ pQueue
+                                                           -> IO ()
+
+##else
+vkGetDeviceQueueUnsafe ::
+                       VkDevice -- ^ device
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> Word32 -- ^ queueIndex
+                                                    -> Ptr VkQueue -- ^ pQueue
+                                                                   -> IO ()
+vkGetDeviceQueueUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceQueue)
+
+{-# NOINLINE vkGetDeviceQueueUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
+--           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
+               :: VkDevice -- ^ device
+                           -> Word32 -- ^ queueFamilyIndex
+                                     -> Word32 -- ^ queueIndex
+                                               -> Ptr VkQueue -- ^ pQueue
+                                                              -> IO ()
+
+##else
+vkGetDeviceQueueSafe ::
+                     VkDevice -- ^ device
+                              -> Word32 -- ^ queueFamilyIndex
+                                        -> Word32 -- ^ queueIndex
+                                                  -> Ptr VkQueue -- ^ pQueue
+                                                                 -> IO ()
+vkGetDeviceQueueSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue)
+
+{-# NOINLINE vkGetDeviceQueueSafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
+--           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
+--
+vkGetDeviceQueue ::
+                 VkDevice -- ^ device
+                          -> Word32 -- ^ queueFamilyIndex
+                                    -> Word32 -- ^ queueIndex
+                                              -> Ptr VkQueue -- ^ pQueue
+                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceQueue = vkGetDeviceQueueUnsafe
+##else
+vkGetDeviceQueue = vkGetDeviceQueueSafe
+
+##endif
+{-# INLINE vkGetDeviceQueue #-}
+
+-- | > void vkGetDeviceQueue
+--   >     ( VkDevice device
+--   >     , uint32_t queueFamilyIndex
+--   >     , uint32_t queueIndex
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+type HS_vkGetDeviceQueue =
+     VkDevice -- ^ device
+              -> Word32 -- ^ queueFamilyIndex
+                        -> Word32 -- ^ queueIndex
+                                  -> Ptr VkQueue -- ^ pQueue
+                                                 -> IO ()
+
+type PFN_vkGetDeviceQueue = FunPtr HS_vkGetDeviceQueue
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueueUnsafe
+               :: PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceQueueSafe ::
+               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
+
+instance VulkanProc "vkGetDeviceQueue" where
+        type VkProcType "vkGetDeviceQueue" = HS_vkGetDeviceQueue
+        vkProcSymbol = _VkGetDeviceQueue
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceQueueUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueueSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueSubmit :: CString
+
+pattern VkQueueSubmit <- (is_VkQueueSubmit -> True)
+  where VkQueueSubmit = _VkQueueSubmit
+
+{-# INLINE _VkQueueSubmit #-}
+
+_VkQueueSubmit :: CString
+_VkQueueSubmit = Ptr "vkQueueSubmit\NUL"##
+
+{-# INLINE is_VkQueueSubmit #-}
+
+is_VkQueueSubmit :: CString -> Bool
+is_VkQueueSubmit = (EQ ==) . cmpCStrings _VkQueueSubmit
+
+type VkQueueSubmit = "vkQueueSubmit"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
+--           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmitUnsafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+##else
+vkQueueSubmitUnsafe ::
+                    VkQueue -- ^ queue
+                            -> Word32 -- ^ submitCount
+                                      -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                          -> VkFence -- ^ fence
+                                                                     -> IO VkResult
+vkQueueSubmitUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueSubmit)
+
+{-# NOINLINE vkQueueSubmitUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
+--           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+##else
+vkQueueSubmitSafe ::
+                  VkQueue -- ^ queue
+                          -> Word32 -- ^ submitCount
+                                    -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                        -> VkFence -- ^ fence
+                                                                   -> IO VkResult
+vkQueueSubmitSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueSubmit)
+
+{-# NOINLINE vkQueueSubmitSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
+--           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
+--
+vkQueueSubmit ::
+              VkQueue -- ^ queue
+                      -> Word32 -- ^ submitCount
+                                -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                    -> VkFence -- ^ fence
+                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkQueueSubmit = vkQueueSubmitUnsafe
+##else
+vkQueueSubmit = vkQueueSubmitSafe
+
+##endif
+{-# INLINE vkQueueSubmit #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkQueueSubmit
+--   >     ( VkQueue queue
+--   >     , uint32_t submitCount
+--   >     , const VkSubmitInfo* pSubmits
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+type HS_vkQueueSubmit =
+     VkQueue -- ^ queue
+             -> Word32 -- ^ submitCount
+                       -> Ptr VkSubmitInfo -- ^ pSubmits
+                                           -> VkFence -- ^ fence
+                                                      -> IO VkResult
+
+type PFN_vkQueueSubmit = FunPtr HS_vkQueueSubmit
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueSubmitUnsafe ::
+               PFN_vkQueueSubmit -> HS_vkQueueSubmit
+
+foreign import ccall safe "dynamic" unwrapVkQueueSubmitSafe ::
+               PFN_vkQueueSubmit -> HS_vkQueueSubmit
+
+instance VulkanProc "vkQueueSubmit" where
+        type VkProcType "vkQueueSubmit" = HS_vkQueueSubmit
+        vkProcSymbol = _VkQueueSubmit
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkQueueSubmitUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueSubmitSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueWaitIdle :: CString
+
+pattern VkQueueWaitIdle <- (is_VkQueueWaitIdle -> True)
+  where VkQueueWaitIdle = _VkQueueWaitIdle
+
+{-# INLINE _VkQueueWaitIdle #-}
+
+_VkQueueWaitIdle :: CString
+_VkQueueWaitIdle = Ptr "vkQueueWaitIdle\NUL"##
+
+{-# INLINE is_VkQueueWaitIdle #-}
+
+is_VkQueueWaitIdle :: CString -> Bool
+is_VkQueueWaitIdle = (EQ ==) . cmpCStrings _VkQueueWaitIdle
+
+type VkQueueWaitIdle = "vkQueueWaitIdle"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
+--           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdleUnsafe
+               :: VkQueue -- ^ queue
+                          -> IO VkResult
+
+##else
+vkQueueWaitIdleUnsafe :: VkQueue -- ^ queue
+                                 -> IO VkResult
+vkQueueWaitIdleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueWaitIdle)
+
+{-# NOINLINE vkQueueWaitIdleUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
+--           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
+               VkQueue -- ^ queue
+                       -> IO VkResult
+
+##else
+vkQueueWaitIdleSafe :: VkQueue -- ^ queue
+                               -> IO VkResult
+vkQueueWaitIdleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueWaitIdle)
+
+{-# NOINLINE vkQueueWaitIdleSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
+--           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
+--
+vkQueueWaitIdle :: VkQueue -- ^ queue
+                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkQueueWaitIdle = vkQueueWaitIdleUnsafe
+##else
+vkQueueWaitIdle = vkQueueWaitIdleSafe
+
+##endif
+{-# INLINE vkQueueWaitIdle #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkQueueWaitIdle
+--   >     ( VkQueue queue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+type HS_vkQueueWaitIdle = VkQueue -- ^ queue
+                                  -> IO VkResult
+
+type PFN_vkQueueWaitIdle = FunPtr HS_vkQueueWaitIdle
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueWaitIdleUnsafe
+               :: PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
+
+foreign import ccall safe "dynamic" unwrapVkQueueWaitIdleSafe ::
+               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
+
+instance VulkanProc "vkQueueWaitIdle" where
+        type VkProcType "vkQueueWaitIdle" = HS_vkQueueWaitIdle
+        vkProcSymbol = _VkQueueWaitIdle
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkQueueWaitIdleUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueWaitIdleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDeviceWaitIdle :: CString
+
+pattern VkDeviceWaitIdle <- (is_VkDeviceWaitIdle -> True)
+  where VkDeviceWaitIdle = _VkDeviceWaitIdle
+
+{-# INLINE _VkDeviceWaitIdle #-}
+
+_VkDeviceWaitIdle :: CString
+_VkDeviceWaitIdle = Ptr "vkDeviceWaitIdle\NUL"##
+
+{-# INLINE is_VkDeviceWaitIdle #-}
+
+is_VkDeviceWaitIdle :: CString -> Bool
+is_VkDeviceWaitIdle = (EQ ==) . cmpCStrings _VkDeviceWaitIdle
+
+type VkDeviceWaitIdle = "vkDeviceWaitIdle"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
+--           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDeviceWaitIdle"
+               vkDeviceWaitIdleUnsafe :: VkDevice -- ^ device
+                                                  -> IO VkResult
+
+##else
+vkDeviceWaitIdleUnsafe :: VkDevice -- ^ device
+                                   -> IO VkResult
+vkDeviceWaitIdleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDeviceWaitIdle)
+
+{-# NOINLINE vkDeviceWaitIdleUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
+--           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
+               :: VkDevice -- ^ device
+                           -> IO VkResult
+
+##else
+vkDeviceWaitIdleSafe :: VkDevice -- ^ device
+                                 -> IO VkResult
+vkDeviceWaitIdleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDeviceWaitIdle)
+
+{-# NOINLINE vkDeviceWaitIdleSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
+--           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
+--
+vkDeviceWaitIdle :: VkDevice -- ^ device
+                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkDeviceWaitIdle = vkDeviceWaitIdleUnsafe
+##else
+vkDeviceWaitIdle = vkDeviceWaitIdleSafe
+
+##endif
+{-# INLINE vkDeviceWaitIdle #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkDeviceWaitIdle
+--   >     ( VkDevice device
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+type HS_vkDeviceWaitIdle = VkDevice -- ^ device
+                                    -> IO VkResult
+
+type PFN_vkDeviceWaitIdle = FunPtr HS_vkDeviceWaitIdle
+
+foreign import ccall unsafe "dynamic" unwrapVkDeviceWaitIdleUnsafe
+               :: PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
+
+foreign import ccall safe "dynamic" unwrapVkDeviceWaitIdleSafe ::
+               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
+
+instance VulkanProc "vkDeviceWaitIdle" where
+        type VkProcType "vkDeviceWaitIdle" = HS_vkDeviceWaitIdle
+        vkProcSymbol = _VkDeviceWaitIdle
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDeviceWaitIdleUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDeviceWaitIdleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateMemory :: CString
+
+pattern VkAllocateMemory <- (is_VkAllocateMemory -> True)
+  where VkAllocateMemory = _VkAllocateMemory
+
+{-# INLINE _VkAllocateMemory #-}
+
+_VkAllocateMemory :: CString
+_VkAllocateMemory = Ptr "vkAllocateMemory\NUL"##
+
+{-# INLINE is_VkAllocateMemory #-}
+
+is_VkAllocateMemory :: CString -> Bool
+is_VkAllocateMemory = (EQ ==) . cmpCStrings _VkAllocateMemory
+
+type VkAllocateMemory = "vkAllocateMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
+--           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateMemory"
+               vkAllocateMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+##else
+vkAllocateMemoryUnsafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                                  ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                           -> IO VkResult
+vkAllocateMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkAllocateMemory)
+
+{-# NOINLINE vkAllocateMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
+--           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+##else
+vkAllocateMemorySafe ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                                ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                         -> IO VkResult
+vkAllocateMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateMemory)
+
+{-# NOINLINE vkAllocateMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
+--           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
+--
+vkAllocateMemory ::
+                 VkDevice -- ^ device
+                          ->
+                   Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                            ->
+                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                               -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkAllocateMemory = vkAllocateMemoryUnsafe
+##else
+vkAllocateMemory = vkAllocateMemorySafe
+
+##endif
+{-# INLINE vkAllocateMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkAllocateMemory
+--   >     ( VkDevice device
+--   >     , const VkMemoryAllocateInfo* pAllocateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDeviceMemory* pMemory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+type HS_vkAllocateMemory =
+     VkDevice -- ^ device
+              ->
+       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDeviceMemory -- ^ pMemory
+                                                         -> IO VkResult
+
+type PFN_vkAllocateMemory = FunPtr HS_vkAllocateMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkAllocateMemoryUnsafe
+               :: PFN_vkAllocateMemory -> HS_vkAllocateMemory
+
+foreign import ccall safe "dynamic" unwrapVkAllocateMemorySafe ::
+               PFN_vkAllocateMemory -> HS_vkAllocateMemory
+
+instance VulkanProc "vkAllocateMemory" where
+        type VkProcType "vkAllocateMemory" = HS_vkAllocateMemory
+        vkProcSymbol = _VkAllocateMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkAllocateMemoryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkAllocateMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeMemory :: CString
+
+pattern VkFreeMemory <- (is_VkFreeMemory -> True)
+  where VkFreeMemory = _VkFreeMemory
+
+{-# INLINE _VkFreeMemory #-}
+
+_VkFreeMemory :: CString
+_VkFreeMemory = Ptr "vkFreeMemory\NUL"##
+
+{-# INLINE is_VkFreeMemory #-}
+
+is_VkFreeMemory :: CString -> Bool
+is_VkFreeMemory = (EQ ==) . cmpCStrings _VkFreeMemory
+
+type VkFreeMemory = "vkFreeMemory"
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
+--           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeMemory" vkFreeMemoryUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkFreeMemoryUnsafe ::
+                   VkDevice -- ^ device
+                            -> VkDeviceMemory -- ^ memory
+                                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                           -> IO ()
+vkFreeMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeMemory)
+
+{-# NOINLINE vkFreeMemoryUnsafe #-}
+##endif
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
+--           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkFreeMemorySafe ::
+                 VkDevice -- ^ device
+                          -> VkDeviceMemory -- ^ memory
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+vkFreeMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeMemory)
+
+{-# NOINLINE vkFreeMemorySafe #-}
+##endif
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
+--           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
+--
+vkFreeMemory ::
+             VkDevice -- ^ device
+                      -> VkDeviceMemory -- ^ memory
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkFreeMemory = vkFreeMemoryUnsafe
+##else
+vkFreeMemory = vkFreeMemorySafe
+
+##endif
+{-# INLINE vkFreeMemory #-}
+
+-- | > void vkFreeMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+type HS_vkFreeMemory =
+     VkDevice -- ^ device
+              -> VkDeviceMemory -- ^ memory
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkFreeMemory = FunPtr HS_vkFreeMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkFreeMemoryUnsafe ::
+               PFN_vkFreeMemory -> HS_vkFreeMemory
+
+foreign import ccall safe "dynamic" unwrapVkFreeMemorySafe ::
+               PFN_vkFreeMemory -> HS_vkFreeMemory
+
+instance VulkanProc "vkFreeMemory" where
+        type VkProcType "vkFreeMemory" = HS_vkFreeMemory
+        vkProcSymbol = _VkFreeMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkFreeMemoryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkFreeMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkMapMemory :: CString
+
+pattern VkMapMemory <- (is_VkMapMemory -> True)
+  where VkMapMemory = _VkMapMemory
+
+{-# INLINE _VkMapMemory #-}
+
+_VkMapMemory :: CString
+_VkMapMemory = Ptr "vkMapMemory\NUL"##
+
+{-# INLINE is_VkMapMemory #-}
+
+is_VkMapMemory :: CString -> Bool
+is_VkMapMemory = (EQ ==) . cmpCStrings _VkMapMemory
+
+type VkMapMemory = "vkMapMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMapMemory@ is an alias
+--           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkMapMemory" vkMapMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+##else
+vkMapMemoryUnsafe ::
+                  VkDevice -- ^ device
+                           ->
+                    VkDeviceMemory -- ^ memory
+                                   ->
+                      VkDeviceSize -- ^ offset
+                                   ->
+                        VkDeviceSize -- ^ size
+                                     -> VkMemoryMapFlags -- ^ flags
+                                                         -> Ptr (Ptr Void) -- ^ ppData
+                                                                           -> IO VkResult
+vkMapMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkMapMemory)
+
+{-# NOINLINE vkMapMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMapMemory@ is an alias
+--           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+##else
+vkMapMemorySafe ::
+                VkDevice -- ^ device
+                         ->
+                  VkDeviceMemory -- ^ memory
+                                 ->
+                    VkDeviceSize -- ^ offset
+                                 ->
+                      VkDeviceSize -- ^ size
+                                   -> VkMemoryMapFlags -- ^ flags
+                                                       -> Ptr (Ptr Void) -- ^ ppData
+                                                                         -> IO VkResult
+vkMapMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkMapMemory)
+
+{-# NOINLINE vkMapMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMapMemory@ is an alias
+--           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
+--
+vkMapMemory ::
+            VkDevice -- ^ device
+                     ->
+              VkDeviceMemory -- ^ memory
+                             ->
+                VkDeviceSize -- ^ offset
+                             ->
+                  VkDeviceSize -- ^ size
+                               -> VkMemoryMapFlags -- ^ flags
+                                                   -> Ptr (Ptr Void) -- ^ ppData
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkMapMemory = vkMapMemoryUnsafe
+##else
+vkMapMemory = vkMapMemorySafe
+
+##endif
+{-# INLINE vkMapMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+--   > VkResult vkMapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize offset
+--   >     , VkDeviceSize size
+--   >     , VkMemoryMapFlags flags
+--   >     , void** ppData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+type HS_vkMapMemory =
+     VkDevice -- ^ device
+              ->
+       VkDeviceMemory -- ^ memory
+                      ->
+         VkDeviceSize -- ^ offset
+                      ->
+           VkDeviceSize -- ^ size
+                        -> VkMemoryMapFlags -- ^ flags
+                                            -> Ptr (Ptr Void) -- ^ ppData
+                                                              -> IO VkResult
+
+type PFN_vkMapMemory = FunPtr HS_vkMapMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkMapMemoryUnsafe ::
+               PFN_vkMapMemory -> HS_vkMapMemory
+
+foreign import ccall safe "dynamic" unwrapVkMapMemorySafe ::
+               PFN_vkMapMemory -> HS_vkMapMemory
+
+instance VulkanProc "vkMapMemory" where
+        type VkProcType "vkMapMemory" = HS_vkMapMemory
+        vkProcSymbol = _VkMapMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkMapMemoryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkMapMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUnmapMemory :: CString
+
+pattern VkUnmapMemory <- (is_VkUnmapMemory -> True)
+  where VkUnmapMemory = _VkUnmapMemory
+
+{-# INLINE _VkUnmapMemory #-}
+
+_VkUnmapMemory :: CString
+_VkUnmapMemory = Ptr "vkUnmapMemory\NUL"##
+
+{-# INLINE is_VkUnmapMemory #-}
+
+is_VkUnmapMemory :: CString -> Bool
+is_VkUnmapMemory = (EQ ==) . cmpCStrings _VkUnmapMemory
+
+type VkUnmapMemory = "vkUnmapMemory"
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
+--           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemoryUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+##else
+vkUnmapMemoryUnsafe :: VkDevice -- ^ device
+                                -> VkDeviceMemory -- ^ memory
+                                                  -> IO ()
+vkUnmapMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkUnmapMemory)
+
+{-# NOINLINE vkUnmapMemoryUnsafe #-}
+##endif
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
+--           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+##else
+vkUnmapMemorySafe :: VkDevice -- ^ device
+                              -> VkDeviceMemory -- ^ memory
+                                                -> IO ()
+vkUnmapMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkUnmapMemory)
+
+{-# NOINLINE vkUnmapMemorySafe #-}
+##endif
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
+--           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
+--
+vkUnmapMemory :: VkDevice -- ^ device
+                          -> VkDeviceMemory -- ^ memory
+                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkUnmapMemory = vkUnmapMemoryUnsafe
+##else
+vkUnmapMemory = vkUnmapMemorySafe
+
+##endif
+{-# INLINE vkUnmapMemory #-}
+
+-- | > void vkUnmapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+type HS_vkUnmapMemory = VkDevice -- ^ device
+                                 -> VkDeviceMemory -- ^ memory
+                                                   -> IO ()
+
+type PFN_vkUnmapMemory = FunPtr HS_vkUnmapMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkUnmapMemoryUnsafe ::
+               PFN_vkUnmapMemory -> HS_vkUnmapMemory
+
+foreign import ccall safe "dynamic" unwrapVkUnmapMemorySafe ::
+               PFN_vkUnmapMemory -> HS_vkUnmapMemory
+
+instance VulkanProc "vkUnmapMemory" where
+        type VkProcType "vkUnmapMemory" = HS_vkUnmapMemory
+        vkProcSymbol = _VkUnmapMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkUnmapMemoryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkUnmapMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFlushMappedMemoryRanges :: CString
+
+pattern VkFlushMappedMemoryRanges <-
+        (is_VkFlushMappedMemoryRanges -> True)
+  where VkFlushMappedMemoryRanges = _VkFlushMappedMemoryRanges
+
+{-# INLINE _VkFlushMappedMemoryRanges #-}
+
+_VkFlushMappedMemoryRanges :: CString
+_VkFlushMappedMemoryRanges = Ptr "vkFlushMappedMemoryRanges\NUL"##
+
+{-# INLINE is_VkFlushMappedMemoryRanges #-}
+
+is_VkFlushMappedMemoryRanges :: CString -> Bool
+is_VkFlushMappedMemoryRanges
+  = (EQ ==) . cmpCStrings _VkFlushMappedMemoryRanges
+
+type VkFlushMappedMemoryRanges = "vkFlushMappedMemoryRanges"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
+--           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRangesUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkFlushMappedMemoryRangesUnsafe ::
+                                VkDevice -- ^ device
+                                         -> Word32 -- ^ memoryRangeCount
+                                                   -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                              -> IO VkResult
+vkFlushMappedMemoryRangesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkFlushMappedMemoryRanges)
+
+{-# NOINLINE vkFlushMappedMemoryRangesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
+--           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkFlushMappedMemoryRangesSafe ::
+                              VkDevice -- ^ device
+                                       -> Word32 -- ^ memoryRangeCount
+                                                 -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                            -> IO VkResult
+vkFlushMappedMemoryRangesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFlushMappedMemoryRanges)
+
+{-# NOINLINE vkFlushMappedMemoryRangesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
+--           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
+--
+vkFlushMappedMemoryRanges ::
+                          VkDevice -- ^ device
+                                   -> Word32 -- ^ memoryRangeCount
+                                             -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkFlushMappedMemoryRanges = vkFlushMappedMemoryRangesUnsafe
+##else
+vkFlushMappedMemoryRanges = vkFlushMappedMemoryRangesSafe
+
+##endif
+{-# INLINE vkFlushMappedMemoryRanges #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkFlushMappedMemoryRanges
+--   >     ( VkDevice device
+--   >     , uint32_t memoryRangeCount
+--   >     , const VkMappedMemoryRange* pMemoryRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+type HS_vkFlushMappedMemoryRanges =
+     VkDevice -- ^ device
+              -> Word32 -- ^ memoryRangeCount
+                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                   -> IO VkResult
+
+type PFN_vkFlushMappedMemoryRanges =
+     FunPtr HS_vkFlushMappedMemoryRanges
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFlushMappedMemoryRangesUnsafe ::
+               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
+
+foreign import ccall safe "dynamic"
+               unwrapVkFlushMappedMemoryRangesSafe ::
+               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
+
+instance VulkanProc "vkFlushMappedMemoryRanges" where
+        type VkProcType "vkFlushMappedMemoryRanges" =
+             HS_vkFlushMappedMemoryRanges
+        vkProcSymbol = _VkFlushMappedMemoryRanges
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkFlushMappedMemoryRangesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkFlushMappedMemoryRangesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkInvalidateMappedMemoryRanges :: CString
+
+pattern VkInvalidateMappedMemoryRanges <-
+        (is_VkInvalidateMappedMemoryRanges -> True)
+  where VkInvalidateMappedMemoryRanges
+          = _VkInvalidateMappedMemoryRanges
+
+{-# INLINE _VkInvalidateMappedMemoryRanges #-}
+
+_VkInvalidateMappedMemoryRanges :: CString
+_VkInvalidateMappedMemoryRanges
+  = Ptr "vkInvalidateMappedMemoryRanges\NUL"##
+
+{-# INLINE is_VkInvalidateMappedMemoryRanges #-}
+
+is_VkInvalidateMappedMemoryRanges :: CString -> Bool
+is_VkInvalidateMappedMemoryRanges
+  = (EQ ==) . cmpCStrings _VkInvalidateMappedMemoryRanges
+
+type VkInvalidateMappedMemoryRanges =
+     "vkInvalidateMappedMemoryRanges"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
+--           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRangesUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkInvalidateMappedMemoryRangesUnsafe ::
+                                     VkDevice -- ^ device
+                                              -> Word32 -- ^ memoryRangeCount
+                                                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                                   -> IO VkResult
+vkInvalidateMappedMemoryRangesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkInvalidateMappedMemoryRanges)
+
+{-# NOINLINE vkInvalidateMappedMemoryRangesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
+--           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkInvalidateMappedMemoryRangesSafe ::
+                                   VkDevice -- ^ device
+                                            -> Word32 -- ^ memoryRangeCount
+                                                      -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                                 -> IO VkResult
+vkInvalidateMappedMemoryRangesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkInvalidateMappedMemoryRanges)
+
+{-# NOINLINE vkInvalidateMappedMemoryRangesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
+--           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
+--
+vkInvalidateMappedMemoryRanges ::
+                               VkDevice -- ^ device
+                                        -> Word32 -- ^ memoryRangeCount
+                                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkInvalidateMappedMemoryRanges
+  = vkInvalidateMappedMemoryRangesUnsafe
+##else
+vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRangesSafe
+
+##endif
+{-# INLINE vkInvalidateMappedMemoryRanges #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkInvalidateMappedMemoryRanges
+--   >     ( VkDevice device
+--   >     , uint32_t memoryRangeCount
+--   >     , const VkMappedMemoryRange* pMemoryRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+type HS_vkInvalidateMappedMemoryRanges =
+     VkDevice -- ^ device
+              -> Word32 -- ^ memoryRangeCount
+                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                   -> IO VkResult
+
+type PFN_vkInvalidateMappedMemoryRanges =
+     FunPtr HS_vkInvalidateMappedMemoryRanges
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkInvalidateMappedMemoryRangesUnsafe ::
+               PFN_vkInvalidateMappedMemoryRanges ->
+                 HS_vkInvalidateMappedMemoryRanges
+
+foreign import ccall safe "dynamic"
+               unwrapVkInvalidateMappedMemoryRangesSafe ::
+               PFN_vkInvalidateMappedMemoryRanges ->
+                 HS_vkInvalidateMappedMemoryRanges
+
+instance VulkanProc "vkInvalidateMappedMemoryRanges" where
+        type VkProcType "vkInvalidateMappedMemoryRanges" =
+             HS_vkInvalidateMappedMemoryRanges
+        vkProcSymbol = _VkInvalidateMappedMemoryRanges
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkInvalidateMappedMemoryRangesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkInvalidateMappedMemoryRangesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceMemoryCommitment :: CString
+
+pattern VkGetDeviceMemoryCommitment <-
+        (is_VkGetDeviceMemoryCommitment -> True)
+  where VkGetDeviceMemoryCommitment = _VkGetDeviceMemoryCommitment
+
+{-# INLINE _VkGetDeviceMemoryCommitment #-}
+
+_VkGetDeviceMemoryCommitment :: CString
+_VkGetDeviceMemoryCommitment
+  = Ptr "vkGetDeviceMemoryCommitment\NUL"##
+
+{-# INLINE is_VkGetDeviceMemoryCommitment #-}
+
+is_VkGetDeviceMemoryCommitment :: CString -> Bool
+is_VkGetDeviceMemoryCommitment
+  = (EQ ==) . cmpCStrings _VkGetDeviceMemoryCommitment
+
+type VkGetDeviceMemoryCommitment = "vkGetDeviceMemoryCommitment"
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
+--           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitmentUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+##else
+vkGetDeviceMemoryCommitmentUnsafe ::
+                                  VkDevice -- ^ device
+                                           -> VkDeviceMemory -- ^ memory
+                                                             -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                                 -> IO ()
+vkGetDeviceMemoryCommitmentUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDeviceMemoryCommitment)
+
+{-# NOINLINE vkGetDeviceMemoryCommitmentUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
+--           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitmentSafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+##else
+vkGetDeviceMemoryCommitmentSafe ::
+                                VkDevice -- ^ device
+                                         -> VkDeviceMemory -- ^ memory
+                                                           -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                               -> IO ()
+vkGetDeviceMemoryCommitmentSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceMemoryCommitment)
+
+{-# NOINLINE vkGetDeviceMemoryCommitmentSafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
+--           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
+--
+vkGetDeviceMemoryCommitment ::
+                            VkDevice -- ^ device
+                                     -> VkDeviceMemory -- ^ memory
+                                                       -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitmentUnsafe
+##else
+vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitmentSafe
+
+##endif
+{-# INLINE vkGetDeviceMemoryCommitment #-}
+
+-- | > void vkGetDeviceMemoryCommitment
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize* pCommittedMemoryInBytes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+type HS_vkGetDeviceMemoryCommitment =
+     VkDevice -- ^ device
+              -> VkDeviceMemory -- ^ memory
+                                -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                    -> IO ()
+
+type PFN_vkGetDeviceMemoryCommitment =
+     FunPtr HS_vkGetDeviceMemoryCommitment
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceMemoryCommitmentUnsafe ::
+               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceMemoryCommitmentSafe ::
+               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
+
+instance VulkanProc "vkGetDeviceMemoryCommitment" where
+        type VkProcType "vkGetDeviceMemoryCommitment" =
+             HS_vkGetDeviceMemoryCommitment
+        vkProcSymbol = _VkGetDeviceMemoryCommitment
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceMemoryCommitmentUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceMemoryCommitmentSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindBufferMemory :: CString
+
+pattern VkBindBufferMemory <- (is_VkBindBufferMemory -> True)
+  where VkBindBufferMemory = _VkBindBufferMemory
+
+{-# INLINE _VkBindBufferMemory #-}
+
+_VkBindBufferMemory :: CString
+_VkBindBufferMemory = Ptr "vkBindBufferMemory\NUL"##
+
+{-# INLINE is_VkBindBufferMemory #-}
+
+is_VkBindBufferMemory :: CString -> Bool
+is_VkBindBufferMemory = (EQ ==) . cmpCStrings _VkBindBufferMemory
+
+type VkBindBufferMemory = "vkBindBufferMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
+--           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBindBufferMemory"
+               vkBindBufferMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+##else
+vkBindBufferMemoryUnsafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkBuffer -- ^ buffer
+                                    -> VkDeviceMemory -- ^ memory
+                                                      -> VkDeviceSize -- ^ memoryOffset
+                                                                      -> IO VkResult
+vkBindBufferMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindBufferMemory)
+
+{-# NOINLINE vkBindBufferMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
+--           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBindBufferMemory"
+               vkBindBufferMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+##else
+vkBindBufferMemorySafe ::
+                       VkDevice -- ^ device
+                                ->
+                         VkBuffer -- ^ buffer
+                                  -> VkDeviceMemory -- ^ memory
+                                                    -> VkDeviceSize -- ^ memoryOffset
+                                                                    -> IO VkResult
+vkBindBufferMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory)
+
+{-# NOINLINE vkBindBufferMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
+--           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
+--
+vkBindBufferMemory ::
+                   VkDevice -- ^ device
+                            ->
+                     VkBuffer -- ^ buffer
+                              -> VkDeviceMemory -- ^ memory
+                                                -> VkDeviceSize -- ^ memoryOffset
+                                                                -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkBindBufferMemory = vkBindBufferMemoryUnsafe
+##else
+vkBindBufferMemory = vkBindBufferMemorySafe
+
+##endif
+{-# INLINE vkBindBufferMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindBufferMemory
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize memoryOffset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+type HS_vkBindBufferMemory =
+     VkDevice -- ^ device
+              ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceMemory -- ^ memory
+                                  -> VkDeviceSize -- ^ memoryOffset
+                                                  -> IO VkResult
+
+type PFN_vkBindBufferMemory = FunPtr HS_vkBindBufferMemory
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindBufferMemoryUnsafe ::
+               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
+
+foreign import ccall safe "dynamic" unwrapVkBindBufferMemorySafe ::
+               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
+
+instance VulkanProc "vkBindBufferMemory" where
+        type VkProcType "vkBindBufferMemory" = HS_vkBindBufferMemory
+        vkProcSymbol = _VkBindBufferMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemoryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkBindBufferMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindImageMemory :: CString
+
+pattern VkBindImageMemory <- (is_VkBindImageMemory -> True)
+  where VkBindImageMemory = _VkBindImageMemory
+
+{-# INLINE _VkBindImageMemory #-}
+
+_VkBindImageMemory :: CString
+_VkBindImageMemory = Ptr "vkBindImageMemory\NUL"##
+
+{-# INLINE is_VkBindImageMemory #-}
+
+is_VkBindImageMemory :: CString -> Bool
+is_VkBindImageMemory = (EQ ==) . cmpCStrings _VkBindImageMemory
+
+type VkBindImageMemory = "vkBindImageMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
+--           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBindImageMemory"
+               vkBindImageMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+##else
+vkBindImageMemoryUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          VkImage -- ^ image
+                                  -> VkDeviceMemory -- ^ memory
+                                                    -> VkDeviceSize -- ^ memoryOffset
+                                                                    -> IO VkResult
+vkBindImageMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindImageMemory)
+
+{-# NOINLINE vkBindImageMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
+--           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+##else
+vkBindImageMemorySafe ::
+                      VkDevice -- ^ device
+                               ->
+                        VkImage -- ^ image
+                                -> VkDeviceMemory -- ^ memory
+                                                  -> VkDeviceSize -- ^ memoryOffset
+                                                                  -> IO VkResult
+vkBindImageMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory)
+
+{-# NOINLINE vkBindImageMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
+--           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
+--
+vkBindImageMemory ::
+                  VkDevice -- ^ device
+                           ->
+                    VkImage -- ^ image
+                            -> VkDeviceMemory -- ^ memory
+                                              -> VkDeviceSize -- ^ memoryOffset
+                                                              -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkBindImageMemory = vkBindImageMemoryUnsafe
+##else
+vkBindImageMemory = vkBindImageMemorySafe
+
+##endif
+{-# INLINE vkBindImageMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize memoryOffset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+type HS_vkBindImageMemory =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               -> VkDeviceMemory -- ^ memory
+                                 -> VkDeviceSize -- ^ memoryOffset
+                                                 -> IO VkResult
+
+type PFN_vkBindImageMemory = FunPtr HS_vkBindImageMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkBindImageMemoryUnsafe
+               :: PFN_vkBindImageMemory -> HS_vkBindImageMemory
+
+foreign import ccall safe "dynamic" unwrapVkBindImageMemorySafe ::
+               PFN_vkBindImageMemory -> HS_vkBindImageMemory
+
+instance VulkanProc "vkBindImageMemory" where
+        type VkProcType "vkBindImageMemory" = HS_vkBindImageMemory
+        vkProcSymbol = _VkBindImageMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkBindImageMemoryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkBindImageMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetBufferMemoryRequirements :: CString
+
+pattern VkGetBufferMemoryRequirements <-
+        (is_VkGetBufferMemoryRequirements -> True)
+  where VkGetBufferMemoryRequirements
+          = _VkGetBufferMemoryRequirements
+
+{-# INLINE _VkGetBufferMemoryRequirements #-}
+
+_VkGetBufferMemoryRequirements :: CString
+_VkGetBufferMemoryRequirements
+  = Ptr "vkGetBufferMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetBufferMemoryRequirements #-}
+
+is_VkGetBufferMemoryRequirements :: CString -> Bool
+is_VkGetBufferMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements
+
+type VkGetBufferMemoryRequirements =
+     "vkGetBufferMemoryRequirements"
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
+--           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirementsUnsafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+##else
+vkGetBufferMemoryRequirementsUnsafe ::
+                                    VkDevice -- ^ device
+                                             -> VkBuffer -- ^ buffer
+                                                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                     -> IO ()
+vkGetBufferMemoryRequirementsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetBufferMemoryRequirements)
+
+{-# NOINLINE vkGetBufferMemoryRequirementsUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
+--           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+##else
+vkGetBufferMemoryRequirementsSafe ::
+                                  VkDevice -- ^ device
+                                           -> VkBuffer -- ^ buffer
+                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                   -> IO ()
+vkGetBufferMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetBufferMemoryRequirements)
+
+{-# NOINLINE vkGetBufferMemoryRequirementsSafe #-}
+##endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
+--           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
+--
+vkGetBufferMemoryRequirements ::
+                              VkDevice -- ^ device
+                                       -> VkBuffer -- ^ buffer
+                                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                               -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirementsUnsafe
+##else
+vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirementsSafe
+
+##endif
+{-# INLINE vkGetBufferMemoryRequirements #-}
+
+-- | > void vkGetBufferMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+type HS_vkGetBufferMemoryRequirements =
+     VkDevice -- ^ device
+              -> VkBuffer -- ^ buffer
+                          -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                      -> IO ()
+
+type PFN_vkGetBufferMemoryRequirements =
+     FunPtr HS_vkGetBufferMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetBufferMemoryRequirementsUnsafe ::
+               PFN_vkGetBufferMemoryRequirements ->
+                 HS_vkGetBufferMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirementsSafe ::
+               PFN_vkGetBufferMemoryRequirements ->
+                 HS_vkGetBufferMemoryRequirements
+
+instance VulkanProc "vkGetBufferMemoryRequirements" where
+        type VkProcType "vkGetBufferMemoryRequirements" =
+             HS_vkGetBufferMemoryRequirements
+        vkProcSymbol = _VkGetBufferMemoryRequirements
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetBufferMemoryRequirementsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirementsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageMemoryRequirements :: CString
+
+pattern VkGetImageMemoryRequirements <-
+        (is_VkGetImageMemoryRequirements -> True)
+  where VkGetImageMemoryRequirements = _VkGetImageMemoryRequirements
+
+{-# INLINE _VkGetImageMemoryRequirements #-}
+
+_VkGetImageMemoryRequirements :: CString
+_VkGetImageMemoryRequirements
+  = Ptr "vkGetImageMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetImageMemoryRequirements #-}
+
+is_VkGetImageMemoryRequirements :: CString -> Bool
+is_VkGetImageMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements
+
+type VkGetImageMemoryRequirements = "vkGetImageMemoryRequirements"
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
+--           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirementsUnsafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+##else
+vkGetImageMemoryRequirementsUnsafe ::
+                                   VkDevice -- ^ device
+                                            -> VkImage -- ^ image
+                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageMemoryRequirementsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageMemoryRequirements)
+
+{-# NOINLINE vkGetImageMemoryRequirementsUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
+--           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+##else
+vkGetImageMemoryRequirementsSafe ::
+                                 VkDevice -- ^ device
+                                          -> VkImage -- ^ image
+                                                     -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                 -> IO ()
+vkGetImageMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageMemoryRequirements)
+
+{-# NOINLINE vkGetImageMemoryRequirementsSafe #-}
+##endif
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
+--           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
+--
+vkGetImageMemoryRequirements ::
+                             VkDevice -- ^ device
+                                      -> VkImage -- ^ image
+                                                 -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetImageMemoryRequirements = vkGetImageMemoryRequirementsUnsafe
+##else
+vkGetImageMemoryRequirements = vkGetImageMemoryRequirementsSafe
+
+##endif
+{-# INLINE vkGetImageMemoryRequirements #-}
+
+-- | > void vkGetImageMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+type HS_vkGetImageMemoryRequirements =
+     VkDevice -- ^ device
+              -> VkImage -- ^ image
+                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                     -> IO ()
+
+type PFN_vkGetImageMemoryRequirements =
+     FunPtr HS_vkGetImageMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageMemoryRequirementsUnsafe ::
+               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirementsSafe ::
+               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
+
+instance VulkanProc "vkGetImageMemoryRequirements" where
+        type VkProcType "vkGetImageMemoryRequirements" =
+             HS_vkGetImageMemoryRequirements
+        vkProcSymbol = _VkGetImageMemoryRequirements
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetImageMemoryRequirementsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirementsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSparseMemoryRequirements :: CString
+
+pattern VkGetImageSparseMemoryRequirements <-
+        (is_VkGetImageSparseMemoryRequirements -> True)
+  where VkGetImageSparseMemoryRequirements
+          = _VkGetImageSparseMemoryRequirements
+
+{-# INLINE _VkGetImageSparseMemoryRequirements #-}
+
+_VkGetImageSparseMemoryRequirements :: CString
+_VkGetImageSparseMemoryRequirements
+  = Ptr "vkGetImageSparseMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetImageSparseMemoryRequirements #-}
+
+is_VkGetImageSparseMemoryRequirements :: CString -> Bool
+is_VkGetImageSparseMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements
+
+type VkGetImageSparseMemoryRequirements =
+     "vkGetImageSparseMemoryRequirements"
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
+--           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirementsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+##else
+vkGetImageSparseMemoryRequirementsUnsafe ::
+                                         VkDevice -- ^ device
+                                                  ->
+                                           VkImage -- ^ image
+                                                   ->
+                                             Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                        ->
+                                               Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageSparseMemoryRequirementsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageSparseMemoryRequirements)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirementsUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
+--           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+##else
+vkGetImageSparseMemoryRequirementsSafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         VkImage -- ^ image
+                                                 ->
+                                           Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                      ->
+                                             Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                 -> IO ()
+vkGetImageSparseMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSparseMemoryRequirements)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirementsSafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
+--           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
+--
+vkGetImageSparseMemoryRequirements ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     VkImage -- ^ image
+                                             ->
+                                       Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                  -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetImageSparseMemoryRequirements
+  = vkGetImageSparseMemoryRequirementsUnsafe
+##else
+vkGetImageSparseMemoryRequirements
+  = vkGetImageSparseMemoryRequirementsSafe
+
+##endif
+{-# INLINE vkGetImageSparseMemoryRequirements #-}
+
+-- | > void vkGetImageSparseMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+type HS_vkGetImageSparseMemoryRequirements =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               ->
+         Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                    -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                           -> IO ()
+
+type PFN_vkGetImageSparseMemoryRequirements =
+     FunPtr HS_vkGetImageSparseMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirementsUnsafe ::
+               PFN_vkGetImageSparseMemoryRequirements ->
+                 HS_vkGetImageSparseMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirementsSafe ::
+               PFN_vkGetImageSparseMemoryRequirements ->
+                 HS_vkGetImageSparseMemoryRequirements
+
+instance VulkanProc "vkGetImageSparseMemoryRequirements" where
+        type VkProcType "vkGetImageSparseMemoryRequirements" =
+             HS_vkGetImageSparseMemoryRequirements
+        vkProcSymbol = _VkGetImageSparseMemoryRequirements
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetImageSparseMemoryRequirementsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirementsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties <-
+        (is_VkGetPhysicalDeviceSparseImageFormatProperties -> True)
+  where VkGetPhysicalDeviceSparseImageFormatProperties
+          = _VkGetPhysicalDeviceSparseImageFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+_VkGetPhysicalDeviceSparseImageFormatProperties :: CString
+_VkGetPhysicalDeviceSparseImageFormatProperties
+  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+is_VkGetPhysicalDeviceSparseImageFormatProperties ::
+                                                  CString -> Bool
+is_VkGetPhysicalDeviceSparseImageFormatProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties
+
+type VkGetPhysicalDeviceSparseImageFormatProperties =
+     "vkGetPhysicalDeviceSparseImageFormatProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
+                                                     VkPhysicalDevice -- ^ physicalDevice
+                                                                      ->
+                                                       VkFormat -- ^ format
+                                                                ->
+                                                         VkImageType -- ^ type
+                                                                     ->
+                                                           VkSampleCountFlagBits -- ^ samples
+                                                                                 ->
+                                                             VkImageUsageFlags -- ^ usage
+                                                                               ->
+                                                               VkImageTiling -- ^ tiling
+                                                                             ->
+                                                                 Ptr Word32 -- ^ pPropertyCount
+                                                                            ->
+                                                                   Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                     -> IO ()
+vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSparseImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+             #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     VkFormat -- ^ format
+                                                              ->
+                                                       VkImageType -- ^ type
+                                                                   ->
+                                                         VkSampleCountFlagBits -- ^ samples
+                                                                               ->
+                                                           VkImageUsageFlags -- ^ usage
+                                                                             ->
+                                                             VkImageTiling -- ^ tiling
+                                                                           ->
+                                                               Ptr Word32 -- ^ pPropertyCount
+                                                                          ->
+                                                                 Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                   -> IO ()
+vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
+--
+vkGetPhysicalDeviceSparseImageFormatProperties ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 VkFormat -- ^ format
+                                                          ->
+                                                   VkImageType -- ^ type
+                                                               ->
+                                                     VkSampleCountFlagBits -- ^ samples
+                                                                           ->
+                                                       VkImageUsageFlags -- ^ usage
+                                                                         ->
+                                                         VkImageTiling -- ^ tiling
+                                                                       ->
+                                                           Ptr Word32 -- ^ pPropertyCount
+                                                                      ->
+                                                             Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                                               ->
+                                                               IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSparseImageFormatProperties
+  = vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+##else
+vkGetPhysicalDeviceSparseImageFormatProperties
+  = vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+-- | > void vkGetPhysicalDeviceSparseImageFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkSampleCountFlagBits samples
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageTiling tiling
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceSparseImageFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkFormat -- ^ format
+                ->
+         VkImageType -- ^ type
+                     ->
+           VkSampleCountFlagBits -- ^ samples
+                                 ->
+             VkImageUsageFlags -- ^ usage
+                               ->
+               VkImageTiling -- ^ tiling
+                             ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                 -> IO ()
+
+type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+instance VulkanProc
+           "vkGetPhysicalDeviceSparseImageFormatProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties" =
+             HS_vkGetPhysicalDeviceSparseImageFormatProperties
+        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueBindSparse :: CString
+
+pattern VkQueueBindSparse <- (is_VkQueueBindSparse -> True)
+  where VkQueueBindSparse = _VkQueueBindSparse
+
+{-# INLINE _VkQueueBindSparse #-}
+
+_VkQueueBindSparse :: CString
+_VkQueueBindSparse = Ptr "vkQueueBindSparse\NUL"##
+
+{-# INLINE is_VkQueueBindSparse #-}
+
+is_VkQueueBindSparse :: CString -> Bool
+is_VkQueueBindSparse = (EQ ==) . cmpCStrings _VkQueueBindSparse
+
+type VkQueueBindSparse = "vkQueueBindSparse"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
+--           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueBindSparse"
+               vkQueueBindSparseUnsafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+##else
+vkQueueBindSparseUnsafe ::
+                        VkQueue -- ^ queue
+                                -> Word32 -- ^ bindInfoCount
+                                          -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                                  -> VkFence -- ^ fence
+                                                                             -> IO VkResult
+vkQueueBindSparseUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueBindSparse)
+
+{-# NOINLINE vkQueueBindSparseUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
+--           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
+               ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+##else
+vkQueueBindSparseSafe ::
+                      VkQueue -- ^ queue
+                              -> Word32 -- ^ bindInfoCount
+                                        -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                                -> VkFence -- ^ fence
+                                                                           -> IO VkResult
+vkQueueBindSparseSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueBindSparse)
+
+{-# NOINLINE vkQueueBindSparseSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
+--           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
+--
+vkQueueBindSparse ::
+                  VkQueue -- ^ queue
+                          -> Word32 -- ^ bindInfoCount
+                                    -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                            -> VkFence -- ^ fence
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkQueueBindSparse = vkQueueBindSparseUnsafe
+##else
+vkQueueBindSparse = vkQueueBindSparseSafe
+
+##endif
+{-# INLINE vkQueueBindSparse #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   Queues: 'sparse_binding'.
+--
+--   > VkResult vkQueueBindSparse
+--   >     ( VkQueue queue
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindSparseInfo* pBindInfo
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+type HS_vkQueueBindSparse =
+     VkQueue -- ^ queue
+             -> Word32 -- ^ bindInfoCount
+                       -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                               -> VkFence -- ^ fence
+                                                          -> IO VkResult
+
+type PFN_vkQueueBindSparse = FunPtr HS_vkQueueBindSparse
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueBindSparseUnsafe
+               :: PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
+
+foreign import ccall safe "dynamic" unwrapVkQueueBindSparseSafe ::
+               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
+
+instance VulkanProc "vkQueueBindSparse" where
+        type VkProcType "vkQueueBindSparse" = HS_vkQueueBindSparse
+        vkProcSymbol = _VkQueueBindSparse
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkQueueBindSparseUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueBindSparseSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateFence :: CString
+
+pattern VkCreateFence <- (is_VkCreateFence -> True)
+  where VkCreateFence = _VkCreateFence
+
+{-# INLINE _VkCreateFence #-}
+
+_VkCreateFence :: CString
+_VkCreateFence = Ptr "vkCreateFence\NUL"##
+
+{-# INLINE is_VkCreateFence #-}
+
+is_VkCreateFence :: CString -> Bool
+is_VkCreateFence = (EQ ==) . cmpCStrings _VkCreateFence
+
+type VkCreateFence = "vkCreateFence"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFence@ is an alias
+--           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateFence" vkCreateFenceUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+##else
+vkCreateFenceUnsafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                            ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkFence -- ^ pFence
+                                                                 -> IO VkResult
+vkCreateFenceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateFence)
+
+{-# NOINLINE vkCreateFenceUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFence@ is an alias
+--           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+##else
+vkCreateFenceSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkFence -- ^ pFence
+                                                               -> IO VkResult
+vkCreateFenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFence)
+
+{-# NOINLINE vkCreateFenceSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFence@ is an alias
+--           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
+--
+vkCreateFence ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkFence -- ^ pFence
+                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateFence = vkCreateFenceUnsafe
+##else
+vkCreateFence = vkCreateFenceSafe
+
+##endif
+{-# INLINE vkCreateFence #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateFence
+--   >     ( VkDevice device
+--   >     , const VkFenceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFence* pFence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+type HS_vkCreateFence =
+     VkDevice -- ^ device
+              ->
+       Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkFence -- ^ pFence
+                                                  -> IO VkResult
+
+type PFN_vkCreateFence = FunPtr HS_vkCreateFence
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateFenceUnsafe ::
+               PFN_vkCreateFence -> HS_vkCreateFence
+
+foreign import ccall safe "dynamic" unwrapVkCreateFenceSafe ::
+               PFN_vkCreateFence -> HS_vkCreateFence
+
+instance VulkanProc "vkCreateFence" where
+        type VkProcType "vkCreateFence" = HS_vkCreateFence
+        vkProcSymbol = _VkCreateFence
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateFenceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateFenceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyFence :: CString
+
+pattern VkDestroyFence <- (is_VkDestroyFence -> True)
+  where VkDestroyFence = _VkDestroyFence
+
+{-# INLINE _VkDestroyFence #-}
+
+_VkDestroyFence :: CString
+_VkDestroyFence = Ptr "vkDestroyFence\NUL"##
+
+{-# INLINE is_VkDestroyFence #-}
+
+is_VkDestroyFence :: CString -> Bool
+is_VkDestroyFence = (EQ ==) . cmpCStrings _VkDestroyFence
+
+type VkDestroyFence = "vkDestroyFence"
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
+--           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyFence" vkDestroyFenceUnsafe
+               :: VkDevice -- ^ device
+                           -> VkFence -- ^ fence
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyFenceUnsafe ::
+                     VkDevice -- ^ device
+                              -> VkFence -- ^ fence
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyFenceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyFence)
+
+{-# NOINLINE vkDestroyFenceUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
+--           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyFenceSafe ::
+                   VkDevice -- ^ device
+                            -> VkFence -- ^ fence
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyFenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFence)
+
+{-# NOINLINE vkDestroyFenceSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
+--           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
+--
+vkDestroyFence ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyFence = vkDestroyFenceUnsafe
+##else
+vkDestroyFence = vkDestroyFenceSafe
+
+##endif
+{-# INLINE vkDestroyFence #-}
+
+-- | > void vkDestroyFence
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+type HS_vkDestroyFence =
+     VkDevice -- ^ device
+              -> VkFence -- ^ fence
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyFence = FunPtr HS_vkDestroyFence
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyFenceUnsafe ::
+               PFN_vkDestroyFence -> HS_vkDestroyFence
+
+foreign import ccall safe "dynamic" unwrapVkDestroyFenceSafe ::
+               PFN_vkDestroyFence -> HS_vkDestroyFence
+
+instance VulkanProc "vkDestroyFence" where
+        type VkProcType "vkDestroyFence" = HS_vkDestroyFence
+        vkProcSymbol = _VkDestroyFence
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyFenceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyFenceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetFences :: CString
+
+pattern VkResetFences <- (is_VkResetFences -> True)
+  where VkResetFences = _VkResetFences
+
+{-# INLINE _VkResetFences #-}
+
+_VkResetFences :: CString
+_VkResetFences = Ptr "vkResetFences\NUL"##
+
+{-# INLINE is_VkResetFences #-}
+
+is_VkResetFences :: CString -> Bool
+is_VkResetFences = (EQ ==) . cmpCStrings _VkResetFences
+
+type VkResetFences = "vkResetFences"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetFences@ is an alias
+--           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetFences" vkResetFencesUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+##else
+vkResetFencesUnsafe ::
+                    VkDevice -- ^ device
+                             -> Word32 -- ^ fenceCount
+                                       -> Ptr VkFence -- ^ pFences
+                                                      -> IO VkResult
+vkResetFencesUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetFences)
+
+{-# NOINLINE vkResetFencesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetFences@ is an alias
+--           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+##else
+vkResetFencesSafe ::
+                  VkDevice -- ^ device
+                           -> Word32 -- ^ fenceCount
+                                     -> Ptr VkFence -- ^ pFences
+                                                    -> IO VkResult
+vkResetFencesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetFences)
+
+{-# NOINLINE vkResetFencesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetFences@ is an alias
+--           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
+--
+vkResetFences :: VkDevice -- ^ device
+                          -> Word32 -- ^ fenceCount
+                                    -> Ptr VkFence -- ^ pFences
+                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetFences = vkResetFencesUnsafe
+##else
+vkResetFences = vkResetFencesSafe
+
+##endif
+{-# INLINE vkResetFences #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetFences
+--   >     ( VkDevice device
+--   >     , uint32_t fenceCount
+--   >     , const VkFence* pFences
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+type HS_vkResetFences =
+     VkDevice -- ^ device
+              -> Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> IO VkResult
+
+type PFN_vkResetFences = FunPtr HS_vkResetFences
+
+foreign import ccall unsafe "dynamic" unwrapVkResetFencesUnsafe ::
+               PFN_vkResetFences -> HS_vkResetFences
+
+foreign import ccall safe "dynamic" unwrapVkResetFencesSafe ::
+               PFN_vkResetFences -> HS_vkResetFences
+
+instance VulkanProc "vkResetFences" where
+        type VkProcType "vkResetFences" = HS_vkResetFences
+        vkProcSymbol = _VkResetFences
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkResetFencesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkResetFencesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetFenceStatus :: CString
+
+pattern VkGetFenceStatus <- (is_VkGetFenceStatus -> True)
+  where VkGetFenceStatus = _VkGetFenceStatus
+
+{-# INLINE _VkGetFenceStatus #-}
+
+_VkGetFenceStatus :: CString
+_VkGetFenceStatus = Ptr "vkGetFenceStatus\NUL"##
+
+{-# INLINE is_VkGetFenceStatus #-}
+
+is_VkGetFenceStatus :: CString -> Bool
+is_VkGetFenceStatus = (EQ ==) . cmpCStrings _VkGetFenceStatus
+
+type VkGetFenceStatus = "vkGetFenceStatus"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
+--           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetFenceStatus"
+               vkGetFenceStatusUnsafe :: VkDevice -- ^ device
+                                                  -> VkFence -- ^ fence
+                                                             -> IO VkResult
+
+##else
+vkGetFenceStatusUnsafe :: VkDevice -- ^ device
+                                   -> VkFence -- ^ fence
+                                              -> IO VkResult
+vkGetFenceStatusUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetFenceStatus)
+
+{-# NOINLINE vkGetFenceStatusUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
+--           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkFence -- ^ fence
+                                      -> IO VkResult
+
+##else
+vkGetFenceStatusSafe :: VkDevice -- ^ device
+                                 -> VkFence -- ^ fence
+                                            -> IO VkResult
+vkGetFenceStatusSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetFenceStatus)
+
+{-# NOINLINE vkGetFenceStatusSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
+--           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
+--
+vkGetFenceStatus :: VkDevice -- ^ device
+                             -> VkFence -- ^ fence
+                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetFenceStatus = vkGetFenceStatusUnsafe
+##else
+vkGetFenceStatus = vkGetFenceStatusSafe
+
+##endif
+{-# INLINE vkGetFenceStatus #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetFenceStatus
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+type HS_vkGetFenceStatus = VkDevice -- ^ device
+                                    -> VkFence -- ^ fence
+                                               -> IO VkResult
+
+type PFN_vkGetFenceStatus = FunPtr HS_vkGetFenceStatus
+
+foreign import ccall unsafe "dynamic" unwrapVkGetFenceStatusUnsafe
+               :: PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
+
+foreign import ccall safe "dynamic" unwrapVkGetFenceStatusSafe ::
+               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
+
+instance VulkanProc "vkGetFenceStatus" where
+        type VkProcType "vkGetFenceStatus" = HS_vkGetFenceStatus
+        vkProcSymbol = _VkGetFenceStatus
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetFenceStatusUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetFenceStatusSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkWaitForFences :: CString
+
+pattern VkWaitForFences <- (is_VkWaitForFences -> True)
+  where VkWaitForFences = _VkWaitForFences
+
+{-# INLINE _VkWaitForFences #-}
+
+_VkWaitForFences :: CString
+_VkWaitForFences = Ptr "vkWaitForFences\NUL"##
+
+{-# INLINE is_VkWaitForFences #-}
+
+is_VkWaitForFences :: CString -> Bool
+is_VkWaitForFences = (EQ ==) . cmpCStrings _VkWaitForFences
+
+type VkWaitForFences = "vkWaitForFences"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
+--           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkWaitForFences" vkWaitForFencesUnsafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+##else
+vkWaitForFencesUnsafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Word32 -- ^ fenceCount
+                               -> Ptr VkFence -- ^ pFences
+                                              -> VkBool32 -- ^ waitAll
+                                                          -> Word64 -- ^ timeout
+                                                                    -> IO VkResult
+vkWaitForFencesUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkWaitForFences)
+
+{-# NOINLINE vkWaitForFencesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
+--           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+##else
+vkWaitForFencesSafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Word32 -- ^ fenceCount
+                             -> Ptr VkFence -- ^ pFences
+                                            -> VkBool32 -- ^ waitAll
+                                                        -> Word64 -- ^ timeout
+                                                                  -> IO VkResult
+vkWaitForFencesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkWaitForFences)
+
+{-# NOINLINE vkWaitForFencesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
+--           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
+--
+vkWaitForFences ::
+                VkDevice -- ^ device
+                         ->
+                  Word32 -- ^ fenceCount
+                         -> Ptr VkFence -- ^ pFences
+                                        -> VkBool32 -- ^ waitAll
+                                                    -> Word64 -- ^ timeout
+                                                              -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkWaitForFences = vkWaitForFencesUnsafe
+##else
+vkWaitForFences = vkWaitForFencesSafe
+
+##endif
+{-# INLINE vkWaitForFences #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkWaitForFences
+--   >     ( VkDevice device
+--   >     , uint32_t fenceCount
+--   >     , const VkFence* pFences
+--   >     , VkBool32 waitAll
+--   >     , uint64_t timeout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+type HS_vkWaitForFences =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ fenceCount
+              -> Ptr VkFence -- ^ pFences
+                             -> VkBool32 -- ^ waitAll
+                                         -> Word64 -- ^ timeout
+                                                   -> IO VkResult
+
+type PFN_vkWaitForFences = FunPtr HS_vkWaitForFences
+
+foreign import ccall unsafe "dynamic" unwrapVkWaitForFencesUnsafe
+               :: PFN_vkWaitForFences -> HS_vkWaitForFences
+
+foreign import ccall safe "dynamic" unwrapVkWaitForFencesSafe ::
+               PFN_vkWaitForFences -> HS_vkWaitForFences
+
+instance VulkanProc "vkWaitForFences" where
+        type VkProcType "vkWaitForFences" = HS_vkWaitForFences
+        vkProcSymbol = _VkWaitForFences
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkWaitForFencesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkWaitForFencesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateSemaphore :: CString
+
+pattern VkCreateSemaphore <- (is_VkCreateSemaphore -> True)
+  where VkCreateSemaphore = _VkCreateSemaphore
+
+{-# INLINE _VkCreateSemaphore #-}
+
+_VkCreateSemaphore :: CString
+_VkCreateSemaphore = Ptr "vkCreateSemaphore\NUL"##
+
+{-# INLINE is_VkCreateSemaphore #-}
+
+is_VkCreateSemaphore :: CString -> Bool
+is_VkCreateSemaphore = (EQ ==) . cmpCStrings _VkCreateSemaphore
+
+type VkCreateSemaphore = "vkCreateSemaphore"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
+--           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateSemaphore"
+               vkCreateSemaphoreUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+##else
+vkCreateSemaphoreUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                                    ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                         -> IO VkResult
+vkCreateSemaphoreUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSemaphore)
+
+{-# NOINLINE vkCreateSemaphoreUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
+--           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+##else
+vkCreateSemaphoreSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                       -> IO VkResult
+vkCreateSemaphoreSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSemaphore)
+
+{-# NOINLINE vkCreateSemaphoreSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
+--           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
+--
+vkCreateSemaphore ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateSemaphore = vkCreateSemaphoreUnsafe
+##else
+vkCreateSemaphore = vkCreateSemaphoreSafe
+
+##endif
+{-# INLINE vkCreateSemaphore #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSemaphore
+--   >     ( VkDevice device
+--   >     , const VkSemaphoreCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSemaphore* pSemaphore
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+type HS_vkCreateSemaphore =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkSemaphore -- ^ pSemaphore
+                                                      -> IO VkResult
+
+type PFN_vkCreateSemaphore = FunPtr HS_vkCreateSemaphore
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateSemaphoreUnsafe
+               :: PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
+
+foreign import ccall safe "dynamic" unwrapVkCreateSemaphoreSafe ::
+               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
+
+instance VulkanProc "vkCreateSemaphore" where
+        type VkProcType "vkCreateSemaphore" = HS_vkCreateSemaphore
+        vkProcSymbol = _VkCreateSemaphore
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateSemaphoreUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSemaphoreSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySemaphore :: CString
+
+pattern VkDestroySemaphore <- (is_VkDestroySemaphore -> True)
+  where VkDestroySemaphore = _VkDestroySemaphore
+
+{-# INLINE _VkDestroySemaphore #-}
+
+_VkDestroySemaphore :: CString
+_VkDestroySemaphore = Ptr "vkDestroySemaphore\NUL"##
+
+{-# INLINE is_VkDestroySemaphore #-}
+
+is_VkDestroySemaphore :: CString -> Bool
+is_VkDestroySemaphore = (EQ ==) . cmpCStrings _VkDestroySemaphore
+
+type VkDestroySemaphore = "vkDestroySemaphore"
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
+--           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySemaphore"
+               vkDestroySemaphoreUnsafe ::
+               VkDevice -- ^ device
+                        -> VkSemaphore -- ^ semaphore
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroySemaphoreUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkSemaphore -- ^ semaphore
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroySemaphoreUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySemaphore)
+
+{-# NOINLINE vkDestroySemaphoreUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
+--           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySemaphore"
+               vkDestroySemaphoreSafe ::
+               VkDevice -- ^ device
+                        -> VkSemaphore -- ^ semaphore
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroySemaphoreSafe ::
+                       VkDevice -- ^ device
+                                -> VkSemaphore -- ^ semaphore
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroySemaphoreSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySemaphore)
+
+{-# NOINLINE vkDestroySemaphoreSafe #-}
+##endif
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
+--           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
+--
+vkDestroySemaphore ::
+                   VkDevice -- ^ device
+                            -> VkSemaphore -- ^ semaphore
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroySemaphore = vkDestroySemaphoreUnsafe
+##else
+vkDestroySemaphore = vkDestroySemaphoreSafe
+
+##endif
+{-# INLINE vkDestroySemaphore #-}
+
+-- | > void vkDestroySemaphore
+--   >     ( VkDevice device
+--   >     , VkSemaphore semaphore
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+type HS_vkDestroySemaphore =
+     VkDevice -- ^ device
+              -> VkSemaphore -- ^ semaphore
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroySemaphore = FunPtr HS_vkDestroySemaphore
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySemaphoreUnsafe ::
+               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
+
+foreign import ccall safe "dynamic" unwrapVkDestroySemaphoreSafe ::
+               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
+
+instance VulkanProc "vkDestroySemaphore" where
+        type VkProcType "vkDestroySemaphore" = HS_vkDestroySemaphore
+        vkProcSymbol = _VkDestroySemaphore
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroySemaphoreUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySemaphoreSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateEvent :: CString
+
+pattern VkCreateEvent <- (is_VkCreateEvent -> True)
+  where VkCreateEvent = _VkCreateEvent
+
+{-# INLINE _VkCreateEvent #-}
+
+_VkCreateEvent :: CString
+_VkCreateEvent = Ptr "vkCreateEvent\NUL"##
+
+{-# INLINE is_VkCreateEvent #-}
+
+is_VkCreateEvent :: CString -> Bool
+is_VkCreateEvent = (EQ ==) . cmpCStrings _VkCreateEvent
+
+type VkCreateEvent = "vkCreateEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
+--           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateEvent" vkCreateEventUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+##else
+vkCreateEventUnsafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                            ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkEvent -- ^ pEvent
+                                                                 -> IO VkResult
+vkCreateEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateEvent)
+
+{-# NOINLINE vkCreateEventUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
+--           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+##else
+vkCreateEventSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkEvent -- ^ pEvent
+                                                               -> IO VkResult
+vkCreateEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateEvent)
+
+{-# NOINLINE vkCreateEventSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
+--           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
+--
+vkCreateEvent ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkEvent -- ^ pEvent
+                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateEvent = vkCreateEventUnsafe
+##else
+vkCreateEvent = vkCreateEventSafe
+
+##endif
+{-# INLINE vkCreateEvent #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateEvent
+--   >     ( VkDevice device
+--   >     , const VkEventCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkEvent* pEvent
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+type HS_vkCreateEvent =
+     VkDevice -- ^ device
+              ->
+       Ptr VkEventCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkEvent -- ^ pEvent
+                                                  -> IO VkResult
+
+type PFN_vkCreateEvent = FunPtr HS_vkCreateEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateEventUnsafe ::
+               PFN_vkCreateEvent -> HS_vkCreateEvent
+
+foreign import ccall safe "dynamic" unwrapVkCreateEventSafe ::
+               PFN_vkCreateEvent -> HS_vkCreateEvent
+
+instance VulkanProc "vkCreateEvent" where
+        type VkProcType "vkCreateEvent" = HS_vkCreateEvent
+        vkProcSymbol = _VkCreateEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateEventUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyEvent :: CString
+
+pattern VkDestroyEvent <- (is_VkDestroyEvent -> True)
+  where VkDestroyEvent = _VkDestroyEvent
+
+{-# INLINE _VkDestroyEvent #-}
+
+_VkDestroyEvent :: CString
+_VkDestroyEvent = Ptr "vkDestroyEvent\NUL"##
+
+{-# INLINE is_VkDestroyEvent #-}
+
+is_VkDestroyEvent :: CString -> Bool
+is_VkDestroyEvent = (EQ ==) . cmpCStrings _VkDestroyEvent
+
+type VkDestroyEvent = "vkDestroyEvent"
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
+--           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyEvent" vkDestroyEventUnsafe
+               :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyEventUnsafe ::
+                     VkDevice -- ^ device
+                              -> VkEvent -- ^ event
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyEvent)
+
+{-# NOINLINE vkDestroyEventUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
+--           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyEventSafe ::
+                   VkDevice -- ^ device
+                            -> VkEvent -- ^ event
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyEvent)
+
+{-# NOINLINE vkDestroyEventSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
+--           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
+--
+vkDestroyEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyEvent = vkDestroyEventUnsafe
+##else
+vkDestroyEvent = vkDestroyEventSafe
+
+##endif
+{-# INLINE vkDestroyEvent #-}
+
+-- | > void vkDestroyEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+type HS_vkDestroyEvent =
+     VkDevice -- ^ device
+              -> VkEvent -- ^ event
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyEvent = FunPtr HS_vkDestroyEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyEventUnsafe ::
+               PFN_vkDestroyEvent -> HS_vkDestroyEvent
+
+foreign import ccall safe "dynamic" unwrapVkDestroyEventSafe ::
+               PFN_vkDestroyEvent -> HS_vkDestroyEvent
+
+instance VulkanProc "vkDestroyEvent" where
+        type VkProcType "vkDestroyEvent" = HS_vkDestroyEvent
+        vkProcSymbol = _VkDestroyEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyEventUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetEventStatus :: CString
+
+pattern VkGetEventStatus <- (is_VkGetEventStatus -> True)
+  where VkGetEventStatus = _VkGetEventStatus
+
+{-# INLINE _VkGetEventStatus #-}
+
+_VkGetEventStatus :: CString
+_VkGetEventStatus = Ptr "vkGetEventStatus\NUL"##
+
+{-# INLINE is_VkGetEventStatus #-}
+
+is_VkGetEventStatus :: CString -> Bool
+is_VkGetEventStatus = (EQ ==) . cmpCStrings _VkGetEventStatus
+
+type VkGetEventStatus = "vkGetEventStatus"
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
+--           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetEventStatus"
+               vkGetEventStatusUnsafe :: VkDevice -- ^ device
+                                                  -> VkEvent -- ^ event
+                                                             -> IO VkResult
+
+##else
+vkGetEventStatusUnsafe :: VkDevice -- ^ device
+                                   -> VkEvent -- ^ event
+                                              -> IO VkResult
+vkGetEventStatusUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetEventStatus)
+
+{-# NOINLINE vkGetEventStatusUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
+--           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+
+##else
+vkGetEventStatusSafe :: VkDevice -- ^ device
+                                 -> VkEvent -- ^ event
+                                            -> IO VkResult
+vkGetEventStatusSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetEventStatus)
+
+{-# NOINLINE vkGetEventStatusSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
+--           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
+--
+vkGetEventStatus :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetEventStatus = vkGetEventStatusUnsafe
+##else
+vkGetEventStatus = vkGetEventStatusSafe
+
+##endif
+{-# INLINE vkGetEventStatus #-}
+
+-- | Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetEventStatus
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+type HS_vkGetEventStatus = VkDevice -- ^ device
+                                    -> VkEvent -- ^ event
+                                               -> IO VkResult
+
+type PFN_vkGetEventStatus = FunPtr HS_vkGetEventStatus
+
+foreign import ccall unsafe "dynamic" unwrapVkGetEventStatusUnsafe
+               :: PFN_vkGetEventStatus -> HS_vkGetEventStatus
+
+foreign import ccall safe "dynamic" unwrapVkGetEventStatusSafe ::
+               PFN_vkGetEventStatus -> HS_vkGetEventStatus
+
+instance VulkanProc "vkGetEventStatus" where
+        type VkProcType "vkGetEventStatus" = HS_vkGetEventStatus
+        vkProcSymbol = _VkGetEventStatus
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetEventStatusUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetEventStatusSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkSetEvent :: CString
+
+pattern VkSetEvent <- (is_VkSetEvent -> True)
+  where VkSetEvent = _VkSetEvent
+
+{-# INLINE _VkSetEvent #-}
+
+_VkSetEvent :: CString
+_VkSetEvent = Ptr "vkSetEvent\NUL"##
+
+{-# INLINE is_VkSetEvent #-}
+
+is_VkSetEvent :: CString -> Bool
+is_VkSetEvent = (EQ ==) . cmpCStrings _VkSetEvent
+
+type VkSetEvent = "vkSetEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkSetEvent@ is an alias
+--           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkSetEvent" vkSetEventUnsafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkSetEventUnsafe :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+vkSetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkSetEvent)
+
+{-# NOINLINE vkSetEventUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkSetEvent@ is an alias
+--           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkSetEventSafe :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+vkSetEventSafe = unsafeDupablePerformIO (vkGetProcSafe @VkSetEvent)
+
+{-# NOINLINE vkSetEventSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkSetEvent@ is an alias
+--           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
+--
+vkSetEvent :: VkDevice -- ^ device
+                       -> VkEvent -- ^ event
+                                  -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkSetEvent = vkSetEventUnsafe
+##else
+vkSetEvent = vkSetEventSafe
+
+##endif
+{-# INLINE vkSetEvent #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+type HS_vkSetEvent = VkDevice -- ^ device
+                              -> VkEvent -- ^ event
+                                         -> IO VkResult
+
+type PFN_vkSetEvent = FunPtr HS_vkSetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkSetEventUnsafe ::
+               PFN_vkSetEvent -> HS_vkSetEvent
+
+foreign import ccall safe "dynamic" unwrapVkSetEventSafe ::
+               PFN_vkSetEvent -> HS_vkSetEvent
+
+instance VulkanProc "vkSetEvent" where
+        type VkProcType "vkSetEvent" = HS_vkSetEvent
+        vkProcSymbol = _VkSetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkSetEventUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkSetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetEvent :: CString
+
+pattern VkResetEvent <- (is_VkResetEvent -> True)
+  where VkResetEvent = _VkResetEvent
+
+{-# INLINE _VkResetEvent #-}
+
+_VkResetEvent :: CString
+_VkResetEvent = Ptr "vkResetEvent\NUL"##
+
+{-# INLINE is_VkResetEvent #-}
+
+is_VkResetEvent :: CString -> Bool
+is_VkResetEvent = (EQ ==) . cmpCStrings _VkResetEvent
+
+type VkResetEvent = "vkResetEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetEvent@ is an alias
+--           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetEvent" vkResetEventUnsafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkResetEventUnsafe :: VkDevice -- ^ device
+                               -> VkEvent -- ^ event
+                                          -> IO VkResult
+vkResetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetEvent)
+
+{-# NOINLINE vkResetEventUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetEvent@ is an alias
+--           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkResetEventSafe :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+vkResetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetEvent)
+
+{-# NOINLINE vkResetEventSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetEvent@ is an alias
+--           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
+--
+vkResetEvent :: VkDevice -- ^ device
+                         -> VkEvent -- ^ event
+                                    -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetEvent = vkResetEventUnsafe
+##else
+vkResetEvent = vkResetEventSafe
+
+##endif
+{-# INLINE vkResetEvent #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+type HS_vkResetEvent = VkDevice -- ^ device
+                                -> VkEvent -- ^ event
+                                           -> IO VkResult
+
+type PFN_vkResetEvent = FunPtr HS_vkResetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkResetEventUnsafe ::
+               PFN_vkResetEvent -> HS_vkResetEvent
+
+foreign import ccall safe "dynamic" unwrapVkResetEventSafe ::
+               PFN_vkResetEvent -> HS_vkResetEvent
+
+instance VulkanProc "vkResetEvent" where
+        type VkProcType "vkResetEvent" = HS_vkResetEvent
+        vkProcSymbol = _VkResetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkResetEventUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkResetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateQueryPool :: CString
+
+pattern VkCreateQueryPool <- (is_VkCreateQueryPool -> True)
+  where VkCreateQueryPool = _VkCreateQueryPool
+
+{-# INLINE _VkCreateQueryPool #-}
+
+_VkCreateQueryPool :: CString
+_VkCreateQueryPool = Ptr "vkCreateQueryPool\NUL"##
+
+{-# INLINE is_VkCreateQueryPool #-}
+
+is_VkCreateQueryPool :: CString -> Bool
+is_VkCreateQueryPool = (EQ ==) . cmpCStrings _VkCreateQueryPool
+
+type VkCreateQueryPool = "vkCreateQueryPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
+--           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateQueryPool"
+               vkCreateQueryPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+##else
+vkCreateQueryPoolUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                                    ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                         -> IO VkResult
+vkCreateQueryPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateQueryPool)
+
+{-# NOINLINE vkCreateQueryPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
+--           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+##else
+vkCreateQueryPoolSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                       -> IO VkResult
+vkCreateQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateQueryPool)
+
+{-# NOINLINE vkCreateQueryPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
+--           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
+--
+vkCreateQueryPool ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateQueryPool = vkCreateQueryPoolUnsafe
+##else
+vkCreateQueryPool = vkCreateQueryPoolSafe
+
+##endif
+{-# INLINE vkCreateQueryPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateQueryPool
+--   >     ( VkDevice device
+--   >     , const VkQueryPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkQueryPool* pQueryPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+type HS_vkCreateQueryPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkQueryPool -- ^ pQueryPool
+                                                      -> IO VkResult
+
+type PFN_vkCreateQueryPool = FunPtr HS_vkCreateQueryPool
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateQueryPoolUnsafe
+               :: PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkCreateQueryPoolSafe ::
+               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
+
+instance VulkanProc "vkCreateQueryPool" where
+        type VkProcType "vkCreateQueryPool" = HS_vkCreateQueryPool
+        vkProcSymbol = _VkCreateQueryPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateQueryPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateQueryPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyQueryPool :: CString
+
+pattern VkDestroyQueryPool <- (is_VkDestroyQueryPool -> True)
+  where VkDestroyQueryPool = _VkDestroyQueryPool
+
+{-# INLINE _VkDestroyQueryPool #-}
+
+_VkDestroyQueryPool :: CString
+_VkDestroyQueryPool = Ptr "vkDestroyQueryPool\NUL"##
+
+{-# INLINE is_VkDestroyQueryPool #-}
+
+is_VkDestroyQueryPool :: CString -> Bool
+is_VkDestroyQueryPool = (EQ ==) . cmpCStrings _VkDestroyQueryPool
+
+type VkDestroyQueryPool = "vkDestroyQueryPool"
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
+--           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyQueryPool"
+               vkDestroyQueryPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkQueryPool -- ^ queryPool
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyQueryPoolUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkQueryPool -- ^ queryPool
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyQueryPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyQueryPool)
+
+{-# NOINLINE vkDestroyQueryPoolUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
+--           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyQueryPool"
+               vkDestroyQueryPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkQueryPool -- ^ queryPool
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyQueryPoolSafe ::
+                       VkDevice -- ^ device
+                                -> VkQueryPool -- ^ queryPool
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyQueryPool)
+
+{-# NOINLINE vkDestroyQueryPoolSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
+--           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
+--
+vkDestroyQueryPool ::
+                   VkDevice -- ^ device
+                            -> VkQueryPool -- ^ queryPool
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyQueryPool = vkDestroyQueryPoolUnsafe
+##else
+vkDestroyQueryPool = vkDestroyQueryPoolSafe
+
+##endif
+{-# INLINE vkDestroyQueryPool #-}
+
+-- | > void vkDestroyQueryPool
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+type HS_vkDestroyQueryPool =
+     VkDevice -- ^ device
+              -> VkQueryPool -- ^ queryPool
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyQueryPool = FunPtr HS_vkDestroyQueryPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyQueryPoolUnsafe ::
+               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkDestroyQueryPoolSafe ::
+               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
+
+instance VulkanProc "vkDestroyQueryPool" where
+        type VkProcType "vkDestroyQueryPool" = HS_vkDestroyQueryPool
+        vkProcSymbol = _VkDestroyQueryPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyQueryPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyQueryPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetQueryPoolResults :: CString
+
+pattern VkGetQueryPoolResults <- (is_VkGetQueryPoolResults -> True)
+  where VkGetQueryPoolResults = _VkGetQueryPoolResults
+
+{-# INLINE _VkGetQueryPoolResults #-}
+
+_VkGetQueryPoolResults :: CString
+_VkGetQueryPoolResults = Ptr "vkGetQueryPoolResults\NUL"##
+
+{-# INLINE is_VkGetQueryPoolResults #-}
+
+is_VkGetQueryPoolResults :: CString -> Bool
+is_VkGetQueryPoolResults
+  = (EQ ==) . cmpCStrings _VkGetQueryPoolResults
+
+type VkGetQueryPoolResults = "vkGetQueryPoolResults"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
+--           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetQueryPoolResults"
+               vkGetQueryPoolResultsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+##else
+vkGetQueryPoolResultsUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkQueryPool -- ^ queryPool
+                                          ->
+                                Word32 -- ^ firstQuery
+                                       ->
+                                  Word32 -- ^ queryCount
+                                         ->
+                                    CSize -- ^ dataSize
+                                          ->
+                                      Ptr Void -- ^ pData
+                                               -> VkDeviceSize -- ^ stride
+                                                               -> VkQueryResultFlags -- ^ flags
+                                                                                     -> IO VkResult
+vkGetQueryPoolResultsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetQueryPoolResults)
+
+{-# NOINLINE vkGetQueryPoolResultsUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
+--           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetQueryPoolResults"
+               vkGetQueryPoolResultsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+##else
+vkGetQueryPoolResultsSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkQueryPool -- ^ queryPool
+                                        ->
+                              Word32 -- ^ firstQuery
+                                     ->
+                                Word32 -- ^ queryCount
+                                       ->
+                                  CSize -- ^ dataSize
+                                        ->
+                                    Ptr Void -- ^ pData
+                                             -> VkDeviceSize -- ^ stride
+                                                             -> VkQueryResultFlags -- ^ flags
+                                                                                   -> IO VkResult
+vkGetQueryPoolResultsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetQueryPoolResults)
+
+{-# NOINLINE vkGetQueryPoolResultsSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
+--           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
+--
+vkGetQueryPoolResults ::
+                      VkDevice -- ^ device
+                               ->
+                        VkQueryPool -- ^ queryPool
+                                    ->
+                          Word32 -- ^ firstQuery
+                                 ->
+                            Word32 -- ^ queryCount
+                                   ->
+                              CSize -- ^ dataSize
+                                    ->
+                                Ptr Void -- ^ pData
+                                         -> VkDeviceSize -- ^ stride
+                                                         -> VkQueryResultFlags -- ^ flags
+                                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetQueryPoolResults = vkGetQueryPoolResultsUnsafe
+##else
+vkGetQueryPoolResults = vkGetQueryPoolResultsSafe
+
+##endif
+{-# INLINE vkGetQueryPoolResults #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetQueryPoolResults
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     , size_t dataSize
+--   >     , void* pData
+--   >     , VkDeviceSize stride
+--   >     , VkQueryResultFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+type HS_vkGetQueryPoolResults =
+     VkDevice -- ^ device
+              ->
+       VkQueryPool -- ^ queryPool
+                   ->
+         Word32 -- ^ firstQuery
+                ->
+           Word32 -- ^ queryCount
+                  ->
+             CSize -- ^ dataSize
+                   ->
+               Ptr Void -- ^ pData
+                        -> VkDeviceSize -- ^ stride
+                                        -> VkQueryResultFlags -- ^ flags
+                                                              -> IO VkResult
+
+type PFN_vkGetQueryPoolResults = FunPtr HS_vkGetQueryPoolResults
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetQueryPoolResultsUnsafe ::
+               PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
+
+foreign import ccall safe "dynamic" unwrapVkGetQueryPoolResultsSafe
+               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
+
+instance VulkanProc "vkGetQueryPoolResults" where
+        type VkProcType "vkGetQueryPoolResults" = HS_vkGetQueryPoolResults
+        vkProcSymbol = _VkGetQueryPoolResults
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetQueryPoolResultsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetQueryPoolResultsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateBuffer :: CString
+
+pattern VkCreateBuffer <- (is_VkCreateBuffer -> True)
+  where VkCreateBuffer = _VkCreateBuffer
+
+{-# INLINE _VkCreateBuffer #-}
+
+_VkCreateBuffer :: CString
+_VkCreateBuffer = Ptr "vkCreateBuffer\NUL"##
+
+{-# INLINE is_VkCreateBuffer #-}
+
+is_VkCreateBuffer :: CString -> Bool
+is_VkCreateBuffer = (EQ ==) . cmpCStrings _VkCreateBuffer
+
+type VkCreateBuffer = "vkCreateBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
+--           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateBuffer" vkCreateBufferUnsafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+##else
+vkCreateBufferUnsafe ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                              ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkBuffer -- ^ pBuffer
+                                                                   -> IO VkResult
+vkCreateBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateBuffer)
+
+{-# NOINLINE vkCreateBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
+--           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+##else
+vkCreateBufferSafe ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                            ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkBuffer -- ^ pBuffer
+                                                                 -> IO VkResult
+vkCreateBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBuffer)
+
+{-# NOINLINE vkCreateBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
+--           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
+--
+vkCreateBuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateBuffer = vkCreateBufferUnsafe
+##else
+vkCreateBuffer = vkCreateBufferSafe
+
+##endif
+{-# INLINE vkCreateBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateBuffer
+--   >     ( VkDevice device
+--   >     , const VkBufferCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkBuffer* pBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+type HS_vkCreateBuffer =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkBuffer -- ^ pBuffer
+                                                   -> IO VkResult
+
+type PFN_vkCreateBuffer = FunPtr HS_vkCreateBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateBufferUnsafe ::
+               PFN_vkCreateBuffer -> HS_vkCreateBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCreateBufferSafe ::
+               PFN_vkCreateBuffer -> HS_vkCreateBuffer
+
+instance VulkanProc "vkCreateBuffer" where
+        type VkProcType "vkCreateBuffer" = HS_vkCreateBuffer
+        vkProcSymbol = _VkCreateBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyBuffer :: CString
+
+pattern VkDestroyBuffer <- (is_VkDestroyBuffer -> True)
+  where VkDestroyBuffer = _VkDestroyBuffer
+
+{-# INLINE _VkDestroyBuffer #-}
+
+_VkDestroyBuffer :: CString
+_VkDestroyBuffer = Ptr "vkDestroyBuffer\NUL"##
+
+{-# INLINE is_VkDestroyBuffer #-}
+
+is_VkDestroyBuffer :: CString -> Bool
+is_VkDestroyBuffer = (EQ ==) . cmpCStrings _VkDestroyBuffer
+
+type VkDestroyBuffer = "vkDestroyBuffer"
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
+--           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBufferUnsafe
+               :: VkDevice -- ^ device
+                           -> VkBuffer -- ^ buffer
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyBufferUnsafe ::
+                      VkDevice -- ^ device
+                               -> VkBuffer -- ^ buffer
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroyBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyBuffer)
+
+{-# NOINLINE vkDestroyBufferUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
+--           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> IO ()
+
+##else
+vkDestroyBufferSafe ::
+                    VkDevice -- ^ device
+                             -> VkBuffer -- ^ buffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBuffer)
+
+{-# NOINLINE vkDestroyBufferSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
+--           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
+--
+vkDestroyBuffer ::
+                VkDevice -- ^ device
+                         -> VkBuffer -- ^ buffer
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyBuffer = vkDestroyBufferUnsafe
+##else
+vkDestroyBuffer = vkDestroyBufferSafe
+
+##endif
+{-# INLINE vkDestroyBuffer #-}
+
+-- | > void vkDestroyBuffer
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+type HS_vkDestroyBuffer =
+     VkDevice -- ^ device
+              -> VkBuffer -- ^ buffer
+                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> IO ()
+
+type PFN_vkDestroyBuffer = FunPtr HS_vkDestroyBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyBufferUnsafe
+               :: PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
+
+foreign import ccall safe "dynamic" unwrapVkDestroyBufferSafe ::
+               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
+
+instance VulkanProc "vkDestroyBuffer" where
+        type VkProcType "vkDestroyBuffer" = HS_vkDestroyBuffer
+        vkProcSymbol = _VkDestroyBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateBufferView :: CString
+
+pattern VkCreateBufferView <- (is_VkCreateBufferView -> True)
+  where VkCreateBufferView = _VkCreateBufferView
+
+{-# INLINE _VkCreateBufferView #-}
+
+_VkCreateBufferView :: CString
+_VkCreateBufferView = Ptr "vkCreateBufferView\NUL"##
+
+{-# INLINE is_VkCreateBufferView #-}
+
+is_VkCreateBufferView :: CString -> Bool
+is_VkCreateBufferView = (EQ ==) . cmpCStrings _VkCreateBufferView
+
+type VkCreateBufferView = "vkCreateBufferView"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
+--           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateBufferView"
+               vkCreateBufferViewUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+##else
+vkCreateBufferViewUnsafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                      ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkBufferView -- ^ pView
+                                                                           -> IO VkResult
+vkCreateBufferViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateBufferView)
+
+{-# NOINLINE vkCreateBufferViewUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
+--           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateBufferView"
+               vkCreateBufferViewSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+##else
+vkCreateBufferViewSafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                    ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkBufferView -- ^ pView
+                                                                         -> IO VkResult
+vkCreateBufferViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBufferView)
+
+{-# NOINLINE vkCreateBufferViewSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
+--           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
+--
+vkCreateBufferView ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkBufferView -- ^ pView
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateBufferView = vkCreateBufferViewUnsafe
+##else
+vkCreateBufferView = vkCreateBufferViewSafe
+
+##endif
+{-# INLINE vkCreateBufferView #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateBufferView
+--   >     ( VkDevice device
+--   >     , const VkBufferViewCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkBufferView* pView
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+type HS_vkCreateBufferView =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                  ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkBufferView -- ^ pView
+                                                       -> IO VkResult
+
+type PFN_vkCreateBufferView = FunPtr HS_vkCreateBufferView
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateBufferViewUnsafe ::
+               PFN_vkCreateBufferView -> HS_vkCreateBufferView
+
+foreign import ccall safe "dynamic" unwrapVkCreateBufferViewSafe ::
+               PFN_vkCreateBufferView -> HS_vkCreateBufferView
+
+instance VulkanProc "vkCreateBufferView" where
+        type VkProcType "vkCreateBufferView" = HS_vkCreateBufferView
+        vkProcSymbol = _VkCreateBufferView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateBufferViewUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateBufferViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyBufferView :: CString
+
+pattern VkDestroyBufferView <- (is_VkDestroyBufferView -> True)
+  where VkDestroyBufferView = _VkDestroyBufferView
+
+{-# INLINE _VkDestroyBufferView #-}
+
+_VkDestroyBufferView :: CString
+_VkDestroyBufferView = Ptr "vkDestroyBufferView\NUL"##
+
+{-# INLINE is_VkDestroyBufferView #-}
+
+is_VkDestroyBufferView :: CString -> Bool
+is_VkDestroyBufferView = (EQ ==) . cmpCStrings _VkDestroyBufferView
+
+type VkDestroyBufferView = "vkDestroyBufferView"
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
+--           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyBufferView"
+               vkDestroyBufferViewUnsafe ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyBufferViewUnsafe ::
+                          VkDevice -- ^ device
+                                   -> VkBufferView -- ^ bufferView
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyBufferViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyBufferView)
+
+{-# NOINLINE vkDestroyBufferViewUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
+--           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyBufferView"
+               vkDestroyBufferViewSafe ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyBufferViewSafe ::
+                        VkDevice -- ^ device
+                                 -> VkBufferView -- ^ bufferView
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyBufferViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBufferView)
+
+{-# NOINLINE vkDestroyBufferViewSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
+--           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
+--
+vkDestroyBufferView ::
+                    VkDevice -- ^ device
+                             -> VkBufferView -- ^ bufferView
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyBufferView = vkDestroyBufferViewUnsafe
+##else
+vkDestroyBufferView = vkDestroyBufferViewSafe
+
+##endif
+{-# INLINE vkDestroyBufferView #-}
+
+-- | > void vkDestroyBufferView
+--   >     ( VkDevice device
+--   >     , VkBufferView bufferView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+type HS_vkDestroyBufferView =
+     VkDevice -- ^ device
+              -> VkBufferView -- ^ bufferView
+                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> IO ()
+
+type PFN_vkDestroyBufferView = FunPtr HS_vkDestroyBufferView
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyBufferViewUnsafe ::
+               PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
+
+foreign import ccall safe "dynamic" unwrapVkDestroyBufferViewSafe
+               :: PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
+
+instance VulkanProc "vkDestroyBufferView" where
+        type VkProcType "vkDestroyBufferView" = HS_vkDestroyBufferView
+        vkProcSymbol = _VkDestroyBufferView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyBufferViewUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyBufferViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateImage :: CString
+
+pattern VkCreateImage <- (is_VkCreateImage -> True)
+  where VkCreateImage = _VkCreateImage
+
+{-# INLINE _VkCreateImage #-}
+
+_VkCreateImage :: CString
+_VkCreateImage = Ptr "vkCreateImage\NUL"##
+
+{-# INLINE is_VkCreateImage #-}
+
+is_VkCreateImage :: CString -> Bool
+is_VkCreateImage = (EQ ==) . cmpCStrings _VkCreateImage
+
+type VkCreateImage = "vkCreateImage"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImage@ is an alias
+--           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateImage" vkCreateImageUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+##else
+vkCreateImageUnsafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                            ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkImage -- ^ pImage
+                                                                 -> IO VkResult
+vkCreateImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateImage)
+
+{-# NOINLINE vkCreateImageUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImage@ is an alias
+--           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+##else
+vkCreateImageSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkImage -- ^ pImage
+                                                               -> IO VkResult
+vkCreateImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImage)
+
+{-# NOINLINE vkCreateImageSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImage@ is an alias
+--           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
+--
+vkCreateImage ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkImage -- ^ pImage
+                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateImage = vkCreateImageUnsafe
+##else
+vkCreateImage = vkCreateImageSafe
+
+##endif
+{-# INLINE vkCreateImage #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateImage
+--   >     ( VkDevice device
+--   >     , const VkImageCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkImage* pImage
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+type HS_vkCreateImage =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkImage -- ^ pImage
+                                                  -> IO VkResult
+
+type PFN_vkCreateImage = FunPtr HS_vkCreateImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateImageUnsafe ::
+               PFN_vkCreateImage -> HS_vkCreateImage
+
+foreign import ccall safe "dynamic" unwrapVkCreateImageSafe ::
+               PFN_vkCreateImage -> HS_vkCreateImage
+
+instance VulkanProc "vkCreateImage" where
+        type VkProcType "vkCreateImage" = HS_vkCreateImage
+        vkProcSymbol = _VkCreateImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyImage :: CString
+
+pattern VkDestroyImage <- (is_VkDestroyImage -> True)
+  where VkDestroyImage = _VkDestroyImage
+
+{-# INLINE _VkDestroyImage #-}
+
+_VkDestroyImage :: CString
+_VkDestroyImage = Ptr "vkDestroyImage\NUL"##
+
+{-# INLINE is_VkDestroyImage #-}
+
+is_VkDestroyImage :: CString -> Bool
+is_VkDestroyImage = (EQ ==) . cmpCStrings _VkDestroyImage
+
+type VkDestroyImage = "vkDestroyImage"
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
+--           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyImage" vkDestroyImageUnsafe
+               :: VkDevice -- ^ device
+                           -> VkImage -- ^ image
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyImageUnsafe ::
+                     VkDevice -- ^ device
+                              -> VkImage -- ^ image
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyImage)
+
+{-# NOINLINE vkDestroyImageUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
+--           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyImageSafe ::
+                   VkDevice -- ^ device
+                            -> VkImage -- ^ image
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImage)
+
+{-# NOINLINE vkDestroyImageSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
+--           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
+--
+vkDestroyImage ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyImage = vkDestroyImageUnsafe
+##else
+vkDestroyImage = vkDestroyImageSafe
+
+##endif
+{-# INLINE vkDestroyImage #-}
+
+-- | > void vkDestroyImage
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+type HS_vkDestroyImage =
+     VkDevice -- ^ device
+              -> VkImage -- ^ image
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyImage = FunPtr HS_vkDestroyImage
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyImageUnsafe ::
+               PFN_vkDestroyImage -> HS_vkDestroyImage
+
+foreign import ccall safe "dynamic" unwrapVkDestroyImageSafe ::
+               PFN_vkDestroyImage -> HS_vkDestroyImage
+
+instance VulkanProc "vkDestroyImage" where
+        type VkProcType "vkDestroyImage" = HS_vkDestroyImage
+        vkProcSymbol = _VkDestroyImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSubresourceLayout :: CString
+
+pattern VkGetImageSubresourceLayout <-
+        (is_VkGetImageSubresourceLayout -> True)
+  where VkGetImageSubresourceLayout = _VkGetImageSubresourceLayout
+
+{-# INLINE _VkGetImageSubresourceLayout #-}
+
+_VkGetImageSubresourceLayout :: CString
+_VkGetImageSubresourceLayout
+  = Ptr "vkGetImageSubresourceLayout\NUL"##
+
+{-# INLINE is_VkGetImageSubresourceLayout #-}
+
+is_VkGetImageSubresourceLayout :: CString -> Bool
+is_VkGetImageSubresourceLayout
+  = (EQ ==) . cmpCStrings _VkGetImageSubresourceLayout
+
+type VkGetImageSubresourceLayout = "vkGetImageSubresourceLayout"
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
+--           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+##else
+vkGetImageSubresourceLayoutUnsafe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkImage -- ^ image
+                                            ->
+                                      Ptr VkImageSubresource -- ^ pSubresource
+                                                             -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                        -> IO ()
+vkGetImageSubresourceLayoutUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageSubresourceLayout)
+
+{-# NOINLINE vkGetImageSubresourceLayoutUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
+--           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+##else
+vkGetImageSubresourceLayoutSafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkImage -- ^ image
+                                          ->
+                                    Ptr VkImageSubresource -- ^ pSubresource
+                                                           -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                      -> IO ()
+vkGetImageSubresourceLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSubresourceLayout)
+
+{-# NOINLINE vkGetImageSubresourceLayoutSafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
+--           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
+--
+vkGetImageSubresourceLayout ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkImage -- ^ image
+                                      ->
+                                Ptr VkImageSubresource -- ^ pSubresource
+                                                       -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetImageSubresourceLayout = vkGetImageSubresourceLayoutUnsafe
+##else
+vkGetImageSubresourceLayout = vkGetImageSubresourceLayoutSafe
+
+##endif
+{-# INLINE vkGetImageSubresourceLayout #-}
+
+-- | > void vkGetImageSubresourceLayout
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkImageSubresource* pSubresource
+--   >     , VkSubresourceLayout* pLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+type HS_vkGetImageSubresourceLayout =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               ->
+         Ptr VkImageSubresource -- ^ pSubresource
+                                -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                           -> IO ()
+
+type PFN_vkGetImageSubresourceLayout =
+     FunPtr HS_vkGetImageSubresourceLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSubresourceLayoutUnsafe ::
+               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSubresourceLayoutSafe ::
+               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
+
+instance VulkanProc "vkGetImageSubresourceLayout" where
+        type VkProcType "vkGetImageSubresourceLayout" =
+             HS_vkGetImageSubresourceLayout
+        vkProcSymbol = _VkGetImageSubresourceLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetImageSubresourceLayoutUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageSubresourceLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateImageView :: CString
+
+pattern VkCreateImageView <- (is_VkCreateImageView -> True)
+  where VkCreateImageView = _VkCreateImageView
+
+{-# INLINE _VkCreateImageView #-}
+
+_VkCreateImageView :: CString
+_VkCreateImageView = Ptr "vkCreateImageView\NUL"##
+
+{-# INLINE is_VkCreateImageView #-}
+
+is_VkCreateImageView :: CString -> Bool
+is_VkCreateImageView = (EQ ==) . cmpCStrings _VkCreateImageView
+
+type VkCreateImageView = "vkCreateImageView"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
+--           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateImageView"
+               vkCreateImageViewUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+##else
+vkCreateImageViewUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                                    ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkImageView -- ^ pView
+                                                                         -> IO VkResult
+vkCreateImageViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateImageView)
+
+{-# NOINLINE vkCreateImageViewUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
+--           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+##else
+vkCreateImageViewSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkImageView -- ^ pView
+                                                                       -> IO VkResult
+vkCreateImageViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImageView)
+
+{-# NOINLINE vkCreateImageViewSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
+--           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
+--
+vkCreateImageView ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkImageView -- ^ pView
+                                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateImageView = vkCreateImageViewUnsafe
+##else
+vkCreateImageView = vkCreateImageViewSafe
+
+##endif
+{-# INLINE vkCreateImageView #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateImageView
+--   >     ( VkDevice device
+--   >     , const VkImageViewCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkImageView* pView
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+type HS_vkCreateImageView =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkImageView -- ^ pView
+                                                      -> IO VkResult
+
+type PFN_vkCreateImageView = FunPtr HS_vkCreateImageView
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateImageViewUnsafe
+               :: PFN_vkCreateImageView -> HS_vkCreateImageView
+
+foreign import ccall safe "dynamic" unwrapVkCreateImageViewSafe ::
+               PFN_vkCreateImageView -> HS_vkCreateImageView
+
+instance VulkanProc "vkCreateImageView" where
+        type VkProcType "vkCreateImageView" = HS_vkCreateImageView
+        vkProcSymbol = _VkCreateImageView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateImageViewUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateImageViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyImageView :: CString
+
+pattern VkDestroyImageView <- (is_VkDestroyImageView -> True)
+  where VkDestroyImageView = _VkDestroyImageView
+
+{-# INLINE _VkDestroyImageView #-}
+
+_VkDestroyImageView :: CString
+_VkDestroyImageView = Ptr "vkDestroyImageView\NUL"##
+
+{-# INLINE is_VkDestroyImageView #-}
+
+is_VkDestroyImageView :: CString -> Bool
+is_VkDestroyImageView = (EQ ==) . cmpCStrings _VkDestroyImageView
+
+type VkDestroyImageView = "vkDestroyImageView"
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
+--           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyImageView"
+               vkDestroyImageViewUnsafe ::
+               VkDevice -- ^ device
+                        -> VkImageView -- ^ imageView
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyImageViewUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkImageView -- ^ imageView
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyImageViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyImageView)
+
+{-# NOINLINE vkDestroyImageViewUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
+--           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyImageView"
+               vkDestroyImageViewSafe ::
+               VkDevice -- ^ device
+                        -> VkImageView -- ^ imageView
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyImageViewSafe ::
+                       VkDevice -- ^ device
+                                -> VkImageView -- ^ imageView
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyImageViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImageView)
+
+{-# NOINLINE vkDestroyImageViewSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
+--           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
+--
+vkDestroyImageView ::
+                   VkDevice -- ^ device
+                            -> VkImageView -- ^ imageView
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyImageView = vkDestroyImageViewUnsafe
+##else
+vkDestroyImageView = vkDestroyImageViewSafe
+
+##endif
+{-# INLINE vkDestroyImageView #-}
+
+-- | > void vkDestroyImageView
+--   >     ( VkDevice device
+--   >     , VkImageView imageView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+type HS_vkDestroyImageView =
+     VkDevice -- ^ device
+              -> VkImageView -- ^ imageView
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyImageView = FunPtr HS_vkDestroyImageView
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyImageViewUnsafe ::
+               PFN_vkDestroyImageView -> HS_vkDestroyImageView
+
+foreign import ccall safe "dynamic" unwrapVkDestroyImageViewSafe ::
+               PFN_vkDestroyImageView -> HS_vkDestroyImageView
+
+instance VulkanProc "vkDestroyImageView" where
+        type VkProcType "vkDestroyImageView" = HS_vkDestroyImageView
+        vkProcSymbol = _VkDestroyImageView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyImageViewUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyImageViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateShaderModule :: CString
+
+pattern VkCreateShaderModule <- (is_VkCreateShaderModule -> True)
+  where VkCreateShaderModule = _VkCreateShaderModule
+
+{-# INLINE _VkCreateShaderModule #-}
+
+_VkCreateShaderModule :: CString
+_VkCreateShaderModule = Ptr "vkCreateShaderModule\NUL"##
+
+{-# INLINE is_VkCreateShaderModule #-}
+
+is_VkCreateShaderModule :: CString -> Bool
+is_VkCreateShaderModule
+  = (EQ ==) . cmpCStrings _VkCreateShaderModule
+
+type VkCreateShaderModule = "vkCreateShaderModule"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
+--           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateShaderModule"
+               vkCreateShaderModuleUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+##else
+vkCreateShaderModuleUnsafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                          ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                               -> IO VkResult
+vkCreateShaderModuleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateShaderModule)
+
+{-# NOINLINE vkCreateShaderModuleUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
+--           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateShaderModule"
+               vkCreateShaderModuleSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+##else
+vkCreateShaderModuleSafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                        ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                             -> IO VkResult
+vkCreateShaderModuleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateShaderModule)
+
+{-# NOINLINE vkCreateShaderModuleSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
+--           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
+--
+vkCreateShaderModule ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                    ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                         -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateShaderModule = vkCreateShaderModuleUnsafe
+##else
+vkCreateShaderModule = vkCreateShaderModuleSafe
+
+##endif
+{-# INLINE vkCreateShaderModule #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateShaderModule
+--   >     ( VkDevice device
+--   >     , const VkShaderModuleCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkShaderModule* pShaderModule
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+type HS_vkCreateShaderModule =
+     VkDevice -- ^ device
+              ->
+       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                    ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkShaderModule -- ^ pShaderModule
+                                                         -> IO VkResult
+
+type PFN_vkCreateShaderModule = FunPtr HS_vkCreateShaderModule
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateShaderModuleUnsafe ::
+               PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
+
+foreign import ccall safe "dynamic" unwrapVkCreateShaderModuleSafe
+               :: PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
+
+instance VulkanProc "vkCreateShaderModule" where
+        type VkProcType "vkCreateShaderModule" = HS_vkCreateShaderModule
+        vkProcSymbol = _VkCreateShaderModule
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateShaderModuleUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateShaderModuleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyShaderModule :: CString
+
+pattern VkDestroyShaderModule <- (is_VkDestroyShaderModule -> True)
+  where VkDestroyShaderModule = _VkDestroyShaderModule
+
+{-# INLINE _VkDestroyShaderModule #-}
+
+_VkDestroyShaderModule :: CString
+_VkDestroyShaderModule = Ptr "vkDestroyShaderModule\NUL"##
+
+{-# INLINE is_VkDestroyShaderModule #-}
+
+is_VkDestroyShaderModule :: CString -> Bool
+is_VkDestroyShaderModule
+  = (EQ ==) . cmpCStrings _VkDestroyShaderModule
+
+type VkDestroyShaderModule = "vkDestroyShaderModule"
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
+--           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyShaderModule"
+               vkDestroyShaderModuleUnsafe ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyShaderModuleUnsafe ::
+                            VkDevice -- ^ device
+                                     -> VkShaderModule -- ^ shaderModule
+                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                    -> IO ()
+vkDestroyShaderModuleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyShaderModule)
+
+{-# NOINLINE vkDestroyShaderModuleUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
+--           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyShaderModule"
+               vkDestroyShaderModuleSafe ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyShaderModuleSafe ::
+                          VkDevice -- ^ device
+                                   -> VkShaderModule -- ^ shaderModule
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyShaderModuleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyShaderModule)
+
+{-# NOINLINE vkDestroyShaderModuleSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
+--           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
+--
+vkDestroyShaderModule ::
+                      VkDevice -- ^ device
+                               -> VkShaderModule -- ^ shaderModule
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyShaderModule = vkDestroyShaderModuleUnsafe
+##else
+vkDestroyShaderModule = vkDestroyShaderModuleSafe
+
+##endif
+{-# INLINE vkDestroyShaderModule #-}
+
+-- | > void vkDestroyShaderModule
+--   >     ( VkDevice device
+--   >     , VkShaderModule shaderModule
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+type HS_vkDestroyShaderModule =
+     VkDevice -- ^ device
+              -> VkShaderModule -- ^ shaderModule
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkDestroyShaderModule = FunPtr HS_vkDestroyShaderModule
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyShaderModuleUnsafe ::
+               PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
+
+foreign import ccall safe "dynamic" unwrapVkDestroyShaderModuleSafe
+               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
+
+instance VulkanProc "vkDestroyShaderModule" where
+        type VkProcType "vkDestroyShaderModule" = HS_vkDestroyShaderModule
+        vkProcSymbol = _VkDestroyShaderModule
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyShaderModuleUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyShaderModuleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreatePipelineCache :: CString
+
+pattern VkCreatePipelineCache <- (is_VkCreatePipelineCache -> True)
+  where VkCreatePipelineCache = _VkCreatePipelineCache
+
+{-# INLINE _VkCreatePipelineCache #-}
+
+_VkCreatePipelineCache :: CString
+_VkCreatePipelineCache = Ptr "vkCreatePipelineCache\NUL"##
+
+{-# INLINE is_VkCreatePipelineCache #-}
+
+is_VkCreatePipelineCache :: CString -> Bool
+is_VkCreatePipelineCache
+  = (EQ ==) . cmpCStrings _VkCreatePipelineCache
+
+type VkCreatePipelineCache = "vkCreatePipelineCache"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
+--           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreatePipelineCache"
+               vkCreatePipelineCacheUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+##else
+vkCreatePipelineCacheUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                            ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                                 -> IO VkResult
+vkCreatePipelineCacheUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreatePipelineCache)
+
+{-# NOINLINE vkCreatePipelineCacheUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
+--           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreatePipelineCache"
+               vkCreatePipelineCacheSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+##else
+vkCreatePipelineCacheSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                          ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                               -> IO VkResult
+vkCreatePipelineCacheSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineCache)
+
+{-# NOINLINE vkCreatePipelineCacheSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
+--           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
+--
+vkCreatePipelineCache ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                      ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreatePipelineCache = vkCreatePipelineCacheUnsafe
+##else
+vkCreatePipelineCache = vkCreatePipelineCacheSafe
+
+##endif
+{-# INLINE vkCreatePipelineCache #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreatePipelineCache
+--   >     ( VkDevice device
+--   >     , const VkPipelineCacheCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipelineCache* pPipelineCache
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+type HS_vkCreatePipelineCache =
+     VkDevice -- ^ device
+              ->
+       Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                     ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                          -> IO VkResult
+
+type PFN_vkCreatePipelineCache = FunPtr HS_vkCreatePipelineCache
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreatePipelineCacheUnsafe ::
+               PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
+
+foreign import ccall safe "dynamic" unwrapVkCreatePipelineCacheSafe
+               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
+
+instance VulkanProc "vkCreatePipelineCache" where
+        type VkProcType "vkCreatePipelineCache" = HS_vkCreatePipelineCache
+        vkProcSymbol = _VkCreatePipelineCache
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreatePipelineCacheUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreatePipelineCacheSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipelineCache :: CString
+
+pattern VkDestroyPipelineCache <-
+        (is_VkDestroyPipelineCache -> True)
+  where VkDestroyPipelineCache = _VkDestroyPipelineCache
+
+{-# INLINE _VkDestroyPipelineCache #-}
+
+_VkDestroyPipelineCache :: CString
+_VkDestroyPipelineCache = Ptr "vkDestroyPipelineCache\NUL"##
+
+{-# INLINE is_VkDestroyPipelineCache #-}
+
+is_VkDestroyPipelineCache :: CString -> Bool
+is_VkDestroyPipelineCache
+  = (EQ ==) . cmpCStrings _VkDestroyPipelineCache
+
+type VkDestroyPipelineCache = "vkDestroyPipelineCache"
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
+--           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipelineCache"
+               vkDestroyPipelineCacheUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+##else
+vkDestroyPipelineCacheUnsafe ::
+                             VkDevice -- ^ device
+                                      -> VkPipelineCache -- ^ pipelineCache
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyPipelineCacheUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipelineCache)
+
+{-# NOINLINE vkDestroyPipelineCacheUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
+--           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipelineCache"
+               vkDestroyPipelineCacheSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+##else
+vkDestroyPipelineCacheSafe ::
+                           VkDevice -- ^ device
+                                    -> VkPipelineCache -- ^ pipelineCache
+                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                    -> IO ()
+vkDestroyPipelineCacheSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineCache)
+
+{-# NOINLINE vkDestroyPipelineCacheSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
+--           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
+--
+vkDestroyPipelineCache ::
+                       VkDevice -- ^ device
+                                -> VkPipelineCache -- ^ pipelineCache
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyPipelineCache = vkDestroyPipelineCacheUnsafe
+##else
+vkDestroyPipelineCache = vkDestroyPipelineCacheSafe
+
+##endif
+{-# INLINE vkDestroyPipelineCache #-}
+
+-- | > void vkDestroyPipelineCache
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+type HS_vkDestroyPipelineCache =
+     VkDevice -- ^ device
+              -> VkPipelineCache -- ^ pipelineCache
+                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> IO ()
+
+type PFN_vkDestroyPipelineCache = FunPtr HS_vkDestroyPipelineCache
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyPipelineCacheUnsafe ::
+               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyPipelineCacheSafe ::
+               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
+
+instance VulkanProc "vkDestroyPipelineCache" where
+        type VkProcType "vkDestroyPipelineCache" =
+             HS_vkDestroyPipelineCache
+        vkProcSymbol = _VkDestroyPipelineCache
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineCacheUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineCacheSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPipelineCacheData :: CString
+
+pattern VkGetPipelineCacheData <-
+        (is_VkGetPipelineCacheData -> True)
+  where VkGetPipelineCacheData = _VkGetPipelineCacheData
+
+{-# INLINE _VkGetPipelineCacheData #-}
+
+_VkGetPipelineCacheData :: CString
+_VkGetPipelineCacheData = Ptr "vkGetPipelineCacheData\NUL"##
+
+{-# INLINE is_VkGetPipelineCacheData #-}
+
+is_VkGetPipelineCacheData :: CString -> Bool
+is_VkGetPipelineCacheData
+  = (EQ ==) . cmpCStrings _VkGetPipelineCacheData
+
+type VkGetPipelineCacheData = "vkGetPipelineCacheData"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
+--           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPipelineCacheData"
+               vkGetPipelineCacheDataUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+##else
+vkGetPipelineCacheDataUnsafe ::
+                             VkDevice -- ^ device
+                                      -> VkPipelineCache -- ^ pipelineCache
+                                                         -> Ptr CSize -- ^ pDataSize
+                                                                      -> Ptr Void -- ^ pData
+                                                                                  -> IO VkResult
+vkGetPipelineCacheDataUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetPipelineCacheData)
+
+{-# NOINLINE vkGetPipelineCacheDataUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
+--           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPipelineCacheData"
+               vkGetPipelineCacheDataSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+##else
+vkGetPipelineCacheDataSafe ::
+                           VkDevice -- ^ device
+                                    -> VkPipelineCache -- ^ pipelineCache
+                                                       -> Ptr CSize -- ^ pDataSize
+                                                                    -> Ptr Void -- ^ pData
+                                                                                -> IO VkResult
+vkGetPipelineCacheDataSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetPipelineCacheData)
+
+{-# NOINLINE vkGetPipelineCacheDataSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
+--           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
+--
+vkGetPipelineCacheData ::
+                       VkDevice -- ^ device
+                                -> VkPipelineCache -- ^ pipelineCache
+                                                   -> Ptr CSize -- ^ pDataSize
+                                                                -> Ptr Void -- ^ pData
+                                                                            -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPipelineCacheData = vkGetPipelineCacheDataUnsafe
+##else
+vkGetPipelineCacheData = vkGetPipelineCacheDataSafe
+
+##endif
+{-# INLINE vkGetPipelineCacheData #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPipelineCacheData
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , size_t* pDataSize
+--   >     , void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+type HS_vkGetPipelineCacheData =
+     VkDevice -- ^ device
+              -> VkPipelineCache -- ^ pipelineCache
+                                 -> Ptr CSize -- ^ pDataSize
+                                              -> Ptr Void -- ^ pData
+                                                          -> IO VkResult
+
+type PFN_vkGetPipelineCacheData = FunPtr HS_vkGetPipelineCacheData
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPipelineCacheDataUnsafe ::
+               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPipelineCacheDataSafe ::
+               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
+
+instance VulkanProc "vkGetPipelineCacheData" where
+        type VkProcType "vkGetPipelineCacheData" =
+             HS_vkGetPipelineCacheData
+        vkProcSymbol = _VkGetPipelineCacheData
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetPipelineCacheDataUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPipelineCacheDataSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkMergePipelineCaches :: CString
+
+pattern VkMergePipelineCaches <- (is_VkMergePipelineCaches -> True)
+  where VkMergePipelineCaches = _VkMergePipelineCaches
+
+{-# INLINE _VkMergePipelineCaches #-}
+
+_VkMergePipelineCaches :: CString
+_VkMergePipelineCaches = Ptr "vkMergePipelineCaches\NUL"##
+
+{-# INLINE is_VkMergePipelineCaches #-}
+
+is_VkMergePipelineCaches :: CString -> Bool
+is_VkMergePipelineCaches
+  = (EQ ==) . cmpCStrings _VkMergePipelineCaches
+
+type VkMergePipelineCaches = "vkMergePipelineCaches"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
+--           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkMergePipelineCaches"
+               vkMergePipelineCachesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+##else
+vkMergePipelineCachesUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkPipelineCache -- ^ dstCache
+                                              -> Word32 -- ^ srcCacheCount
+                                                        -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                               -> IO VkResult
+vkMergePipelineCachesUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkMergePipelineCaches)
+
+{-# NOINLINE vkMergePipelineCachesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
+--           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkMergePipelineCaches"
+               vkMergePipelineCachesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+##else
+vkMergePipelineCachesSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkPipelineCache -- ^ dstCache
+                                            -> Word32 -- ^ srcCacheCount
+                                                      -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                             -> IO VkResult
+vkMergePipelineCachesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkMergePipelineCaches)
+
+{-# NOINLINE vkMergePipelineCachesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
+--           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
+--
+vkMergePipelineCaches ::
+                      VkDevice -- ^ device
+                               ->
+                        VkPipelineCache -- ^ dstCache
+                                        -> Word32 -- ^ srcCacheCount
+                                                  -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                         -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkMergePipelineCaches = vkMergePipelineCachesUnsafe
+##else
+vkMergePipelineCaches = vkMergePipelineCachesSafe
+
+##endif
+{-# INLINE vkMergePipelineCaches #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkMergePipelineCaches
+--   >     ( VkDevice device
+--   >     , VkPipelineCache dstCache
+--   >     , uint32_t srcCacheCount
+--   >     , const VkPipelineCache* pSrcCaches
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+type HS_vkMergePipelineCaches =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ dstCache
+                       -> Word32 -- ^ srcCacheCount
+                                 -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                        -> IO VkResult
+
+type PFN_vkMergePipelineCaches = FunPtr HS_vkMergePipelineCaches
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkMergePipelineCachesUnsafe ::
+               PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
+
+foreign import ccall safe "dynamic" unwrapVkMergePipelineCachesSafe
+               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
+
+instance VulkanProc "vkMergePipelineCaches" where
+        type VkProcType "vkMergePipelineCaches" = HS_vkMergePipelineCaches
+        vkProcSymbol = _VkMergePipelineCaches
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkMergePipelineCachesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkMergePipelineCachesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateGraphicsPipelines :: CString
+
+pattern VkCreateGraphicsPipelines <-
+        (is_VkCreateGraphicsPipelines -> True)
+  where VkCreateGraphicsPipelines = _VkCreateGraphicsPipelines
+
+{-# INLINE _VkCreateGraphicsPipelines #-}
+
+_VkCreateGraphicsPipelines :: CString
+_VkCreateGraphicsPipelines = Ptr "vkCreateGraphicsPipelines\NUL"##
+
+{-# INLINE is_VkCreateGraphicsPipelines #-}
+
+is_VkCreateGraphicsPipelines :: CString -> Bool
+is_VkCreateGraphicsPipelines
+  = (EQ ==) . cmpCStrings _VkCreateGraphicsPipelines
+
+type VkCreateGraphicsPipelines = "vkCreateGraphicsPipelines"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
+--           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelinesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateGraphicsPipelinesUnsafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkPipelineCache -- ^ pipelineCache
+                                                  ->
+                                    Word32 -- ^ createInfoCount
+                                           ->
+                                      Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                       ->
+                                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> Ptr VkPipeline -- ^ pPipelines
+                                                                                    -> IO VkResult
+vkCreateGraphicsPipelinesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateGraphicsPipelines)
+
+{-# NOINLINE vkCreateGraphicsPipelinesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
+--           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateGraphicsPipelinesSafe ::
+                              VkDevice -- ^ device
+                                       ->
+                                VkPipelineCache -- ^ pipelineCache
+                                                ->
+                                  Word32 -- ^ createInfoCount
+                                         ->
+                                    Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                     ->
+                                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> Ptr VkPipeline -- ^ pPipelines
+                                                                                  -> IO VkResult
+vkCreateGraphicsPipelinesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateGraphicsPipelines)
+
+{-# NOINLINE vkCreateGraphicsPipelinesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
+--           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
+--
+vkCreateGraphicsPipelines ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkPipelineCache -- ^ pipelineCache
+                                            ->
+                              Word32 -- ^ createInfoCount
+                                     ->
+                                Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                 ->
+                                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> Ptr VkPipeline -- ^ pPipelines
+                                                                              -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateGraphicsPipelines = vkCreateGraphicsPipelinesUnsafe
+##else
+vkCreateGraphicsPipelines = vkCreateGraphicsPipelinesSafe
+
+##endif
+{-# INLINE vkCreateGraphicsPipelines #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateGraphicsPipelines
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , uint32_t createInfoCount
+--   >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipeline* pPipelines
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+type HS_vkCreateGraphicsPipelines =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ pipelineCache
+                       ->
+         Word32 -- ^ createInfoCount
+                ->
+           Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                            ->
+             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                       -> Ptr VkPipeline -- ^ pPipelines
+                                                         -> IO VkResult
+
+type PFN_vkCreateGraphicsPipelines =
+     FunPtr HS_vkCreateGraphicsPipelines
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateGraphicsPipelinesUnsafe ::
+               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateGraphicsPipelinesSafe ::
+               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
+
+instance VulkanProc "vkCreateGraphicsPipelines" where
+        type VkProcType "vkCreateGraphicsPipelines" =
+             HS_vkCreateGraphicsPipelines
+        vkProcSymbol = _VkCreateGraphicsPipelines
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateGraphicsPipelinesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateGraphicsPipelinesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateComputePipelines :: CString
+
+pattern VkCreateComputePipelines <-
+        (is_VkCreateComputePipelines -> True)
+  where VkCreateComputePipelines = _VkCreateComputePipelines
+
+{-# INLINE _VkCreateComputePipelines #-}
+
+_VkCreateComputePipelines :: CString
+_VkCreateComputePipelines = Ptr "vkCreateComputePipelines\NUL"##
+
+{-# INLINE is_VkCreateComputePipelines #-}
+
+is_VkCreateComputePipelines :: CString -> Bool
+is_VkCreateComputePipelines
+  = (EQ ==) . cmpCStrings _VkCreateComputePipelines
+
+type VkCreateComputePipelines = "vkCreateComputePipelines"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
+--           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateComputePipelines"
+               vkCreateComputePipelinesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateComputePipelinesUnsafe ::
+                               VkDevice -- ^ device
+                                        ->
+                                 VkPipelineCache -- ^ pipelineCache
+                                                 ->
+                                   Word32 -- ^ createInfoCount
+                                          ->
+                                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                                     ->
+                                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                                   -> IO VkResult
+vkCreateComputePipelinesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateComputePipelines)
+
+{-# NOINLINE vkCreateComputePipelinesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
+--           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateComputePipelines"
+               vkCreateComputePipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateComputePipelinesSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               VkPipelineCache -- ^ pipelineCache
+                                               ->
+                                 Word32 -- ^ createInfoCount
+                                        ->
+                                   Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                                   ->
+                                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> Ptr VkPipeline -- ^ pPipelines
+                                                                                 -> IO VkResult
+vkCreateComputePipelinesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateComputePipelines)
+
+{-# NOINLINE vkCreateComputePipelinesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
+--           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
+--
+vkCreateComputePipelines ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkPipelineCache -- ^ pipelineCache
+                                           ->
+                             Word32 -- ^ createInfoCount
+                                    ->
+                               Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                               ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkPipeline -- ^ pPipelines
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateComputePipelines = vkCreateComputePipelinesUnsafe
+##else
+vkCreateComputePipelines = vkCreateComputePipelinesSafe
+
+##endif
+{-# INLINE vkCreateComputePipelines #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateComputePipelines
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , uint32_t createInfoCount
+--   >     , const VkComputePipelineCreateInfo* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipeline* pPipelines
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+type HS_vkCreateComputePipelines =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ pipelineCache
+                       ->
+         Word32 -- ^ createInfoCount
+                ->
+           Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                           ->
+             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                       -> Ptr VkPipeline -- ^ pPipelines
+                                                         -> IO VkResult
+
+type PFN_vkCreateComputePipelines =
+     FunPtr HS_vkCreateComputePipelines
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateComputePipelinesUnsafe ::
+               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateComputePipelinesSafe ::
+               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
+
+instance VulkanProc "vkCreateComputePipelines" where
+        type VkProcType "vkCreateComputePipelines" =
+             HS_vkCreateComputePipelines
+        vkProcSymbol = _VkCreateComputePipelines
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateComputePipelinesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateComputePipelinesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipeline :: CString
+
+pattern VkDestroyPipeline <- (is_VkDestroyPipeline -> True)
+  where VkDestroyPipeline = _VkDestroyPipeline
+
+{-# INLINE _VkDestroyPipeline #-}
+
+_VkDestroyPipeline :: CString
+_VkDestroyPipeline = Ptr "vkDestroyPipeline\NUL"##
+
+{-# INLINE is_VkDestroyPipeline #-}
+
+is_VkDestroyPipeline :: CString -> Bool
+is_VkDestroyPipeline = (EQ ==) . cmpCStrings _VkDestroyPipeline
+
+type VkDestroyPipeline = "vkDestroyPipeline"
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
+--           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipeline"
+               vkDestroyPipelineUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipeline -- ^ pipeline
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyPipelineUnsafe ::
+                        VkDevice -- ^ device
+                                 -> VkPipeline -- ^ pipeline
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyPipelineUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipeline)
+
+{-# NOINLINE vkDestroyPipelineUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
+--           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
+               :: VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyPipelineSafe ::
+                      VkDevice -- ^ device
+                               -> VkPipeline -- ^ pipeline
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroyPipelineSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipeline)
+
+{-# NOINLINE vkDestroyPipelineSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
+--           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
+--
+vkDestroyPipeline ::
+                  VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyPipeline = vkDestroyPipelineUnsafe
+##else
+vkDestroyPipeline = vkDestroyPipelineSafe
+
+##endif
+{-# INLINE vkDestroyPipeline #-}
+
+-- | > void vkDestroyPipeline
+--   >     ( VkDevice device
+--   >     , VkPipeline pipeline
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+type HS_vkDestroyPipeline =
+     VkDevice -- ^ device
+              -> VkPipeline -- ^ pipeline
+                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> IO ()
+
+type PFN_vkDestroyPipeline = FunPtr HS_vkDestroyPipeline
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineUnsafe
+               :: PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
+
+foreign import ccall safe "dynamic" unwrapVkDestroyPipelineSafe ::
+               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
+
+instance VulkanProc "vkDestroyPipeline" where
+        type VkProcType "vkDestroyPipeline" = HS_vkDestroyPipeline
+        vkProcSymbol = _VkDestroyPipeline
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreatePipelineLayout :: CString
+
+pattern VkCreatePipelineLayout <-
+        (is_VkCreatePipelineLayout -> True)
+  where VkCreatePipelineLayout = _VkCreatePipelineLayout
+
+{-# INLINE _VkCreatePipelineLayout #-}
+
+_VkCreatePipelineLayout :: CString
+_VkCreatePipelineLayout = Ptr "vkCreatePipelineLayout\NUL"##
+
+{-# INLINE is_VkCreatePipelineLayout #-}
+
+is_VkCreatePipelineLayout :: CString -> Bool
+is_VkCreatePipelineLayout
+  = (EQ ==) . cmpCStrings _VkCreatePipelineLayout
+
+type VkCreatePipelineLayout = "vkCreatePipelineLayout"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
+--           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreatePipelineLayout"
+               vkCreatePipelineLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+##else
+vkCreatePipelineLayoutUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                              ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                                   -> IO VkResult
+vkCreatePipelineLayoutUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreatePipelineLayout)
+
+{-# NOINLINE vkCreatePipelineLayoutUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
+--           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreatePipelineLayout"
+               vkCreatePipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+##else
+vkCreatePipelineLayoutSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                            ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                                 -> IO VkResult
+vkCreatePipelineLayoutSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineLayout)
+
+{-# NOINLINE vkCreatePipelineLayoutSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
+--           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
+--
+vkCreatePipelineLayout ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreatePipelineLayout = vkCreatePipelineLayoutUnsafe
+##else
+vkCreatePipelineLayout = vkCreatePipelineLayoutSafe
+
+##endif
+{-# INLINE vkCreatePipelineLayout #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreatePipelineLayout
+--   >     ( VkDevice device
+--   >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipelineLayout* pPipelineLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+type HS_vkCreatePipelineLayout =
+     VkDevice -- ^ device
+              ->
+       Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                      ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                           -> IO VkResult
+
+type PFN_vkCreatePipelineLayout = FunPtr HS_vkCreatePipelineLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreatePipelineLayoutUnsafe ::
+               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreatePipelineLayoutSafe ::
+               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
+
+instance VulkanProc "vkCreatePipelineLayout" where
+        type VkProcType "vkCreatePipelineLayout" =
+             HS_vkCreatePipelineLayout
+        vkProcSymbol = _VkCreatePipelineLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreatePipelineLayoutUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreatePipelineLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipelineLayout :: CString
+
+pattern VkDestroyPipelineLayout <-
+        (is_VkDestroyPipelineLayout -> True)
+  where VkDestroyPipelineLayout = _VkDestroyPipelineLayout
+
+{-# INLINE _VkDestroyPipelineLayout #-}
+
+_VkDestroyPipelineLayout :: CString
+_VkDestroyPipelineLayout = Ptr "vkDestroyPipelineLayout\NUL"##
+
+{-# INLINE is_VkDestroyPipelineLayout #-}
+
+is_VkDestroyPipelineLayout :: CString -> Bool
+is_VkDestroyPipelineLayout
+  = (EQ ==) . cmpCStrings _VkDestroyPipelineLayout
+
+type VkDestroyPipelineLayout = "vkDestroyPipelineLayout"
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
+--           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayoutUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyPipelineLayoutUnsafe ::
+                              VkDevice -- ^ device
+                                       -> VkPipelineLayout -- ^ pipelineLayout
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroyPipelineLayoutUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipelineLayout)
+
+{-# NOINLINE vkDestroyPipelineLayoutUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
+--           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyPipelineLayoutSafe ::
+                            VkDevice -- ^ device
+                                     -> VkPipelineLayout -- ^ pipelineLayout
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyPipelineLayoutSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineLayout)
+
+{-# NOINLINE vkDestroyPipelineLayoutSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
+--           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
+--
+vkDestroyPipelineLayout ::
+                        VkDevice -- ^ device
+                                 -> VkPipelineLayout -- ^ pipelineLayout
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyPipelineLayout = vkDestroyPipelineLayoutUnsafe
+##else
+vkDestroyPipelineLayout = vkDestroyPipelineLayoutSafe
+
+##endif
+{-# INLINE vkDestroyPipelineLayout #-}
+
+-- | > void vkDestroyPipelineLayout
+--   >     ( VkDevice device
+--   >     , VkPipelineLayout pipelineLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+type HS_vkDestroyPipelineLayout =
+     VkDevice -- ^ device
+              -> VkPipelineLayout -- ^ pipelineLayout
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyPipelineLayout =
+     FunPtr HS_vkDestroyPipelineLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyPipelineLayoutUnsafe ::
+               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyPipelineLayoutSafe ::
+               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
+
+instance VulkanProc "vkDestroyPipelineLayout" where
+        type VkProcType "vkDestroyPipelineLayout" =
+             HS_vkDestroyPipelineLayout
+        vkProcSymbol = _VkDestroyPipelineLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineLayoutUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateSampler :: CString
+
+pattern VkCreateSampler <- (is_VkCreateSampler -> True)
+  where VkCreateSampler = _VkCreateSampler
+
+{-# INLINE _VkCreateSampler #-}
+
+_VkCreateSampler :: CString
+_VkCreateSampler = Ptr "vkCreateSampler\NUL"##
+
+{-# INLINE is_VkCreateSampler #-}
+
+is_VkCreateSampler :: CString -> Bool
+is_VkCreateSampler = (EQ ==) . cmpCStrings _VkCreateSampler
+
+type VkCreateSampler = "vkCreateSampler"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
+--           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateSampler" vkCreateSamplerUnsafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+##else
+vkCreateSamplerUnsafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                                ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSampler -- ^ pSampler
+                                                                     -> IO VkResult
+vkCreateSamplerUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSampler)
+
+{-# NOINLINE vkCreateSamplerUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
+--           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+##else
+vkCreateSamplerSafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                              ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkSampler -- ^ pSampler
+                                                                   -> IO VkResult
+vkCreateSamplerSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSampler)
+
+{-# NOINLINE vkCreateSamplerSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
+--           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
+--
+vkCreateSampler ::
+                VkDevice -- ^ device
+                         ->
+                  Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                          ->
+                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                              -> Ptr VkSampler -- ^ pSampler
+                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateSampler = vkCreateSamplerUnsafe
+##else
+vkCreateSampler = vkCreateSamplerSafe
+
+##endif
+{-# INLINE vkCreateSampler #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+--   > VkResult vkCreateSampler
+--   >     ( VkDevice device
+--   >     , const VkSamplerCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSampler* pSampler
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+type HS_vkCreateSampler =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                               ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkSampler -- ^ pSampler
+                                                    -> IO VkResult
+
+type PFN_vkCreateSampler = FunPtr HS_vkCreateSampler
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateSamplerUnsafe
+               :: PFN_vkCreateSampler -> HS_vkCreateSampler
+
+foreign import ccall safe "dynamic" unwrapVkCreateSamplerSafe ::
+               PFN_vkCreateSampler -> HS_vkCreateSampler
+
+instance VulkanProc "vkCreateSampler" where
+        type VkProcType "vkCreateSampler" = HS_vkCreateSampler
+        vkProcSymbol = _VkCreateSampler
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateSamplerUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSamplerSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySampler :: CString
+
+pattern VkDestroySampler <- (is_VkDestroySampler -> True)
+  where VkDestroySampler = _VkDestroySampler
+
+{-# INLINE _VkDestroySampler #-}
+
+_VkDestroySampler :: CString
+_VkDestroySampler = Ptr "vkDestroySampler\NUL"##
+
+{-# INLINE is_VkDestroySampler #-}
+
+is_VkDestroySampler :: CString -> Bool
+is_VkDestroySampler = (EQ ==) . cmpCStrings _VkDestroySampler
+
+type VkDestroySampler = "vkDestroySampler"
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
+--           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySampler"
+               vkDestroySamplerUnsafe ::
+               VkDevice -- ^ device
+                        -> VkSampler -- ^ sampler
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+
+##else
+vkDestroySamplerUnsafe ::
+                       VkDevice -- ^ device
+                                -> VkSampler -- ^ sampler
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroySamplerUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySampler)
+
+{-# NOINLINE vkDestroySamplerUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
+--           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
+               :: VkDevice -- ^ device
+                           -> VkSampler -- ^ sampler
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroySamplerSafe ::
+                     VkDevice -- ^ device
+                              -> VkSampler -- ^ sampler
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroySamplerSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySampler)
+
+{-# NOINLINE vkDestroySamplerSafe #-}
+##endif
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
+--           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
+--
+vkDestroySampler ::
+                 VkDevice -- ^ device
+                          -> VkSampler -- ^ sampler
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroySampler = vkDestroySamplerUnsafe
+##else
+vkDestroySampler = vkDestroySamplerSafe
+
+##endif
+{-# INLINE vkDestroySampler #-}
+
+-- | > void vkDestroySampler
+--   >     ( VkDevice device
+--   >     , VkSampler sampler
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+type HS_vkDestroySampler =
+     VkDevice -- ^ device
+              -> VkSampler -- ^ sampler
+                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> IO ()
+
+type PFN_vkDestroySampler = FunPtr HS_vkDestroySampler
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroySamplerUnsafe
+               :: PFN_vkDestroySampler -> HS_vkDestroySampler
+
+foreign import ccall safe "dynamic" unwrapVkDestroySamplerSafe ::
+               PFN_vkDestroySampler -> HS_vkDestroySampler
+
+instance VulkanProc "vkDestroySampler" where
+        type VkProcType "vkDestroySampler" = HS_vkDestroySampler
+        vkProcSymbol = _VkDestroySampler
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroySamplerUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySamplerSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDescriptorSetLayout :: CString
+
+pattern VkCreateDescriptorSetLayout <-
+        (is_VkCreateDescriptorSetLayout -> True)
+  where VkCreateDescriptorSetLayout = _VkCreateDescriptorSetLayout
+
+{-# INLINE _VkCreateDescriptorSetLayout #-}
+
+_VkCreateDescriptorSetLayout :: CString
+_VkCreateDescriptorSetLayout
+  = Ptr "vkCreateDescriptorSetLayout\NUL"##
+
+{-# INLINE is_VkCreateDescriptorSetLayout #-}
+
+is_VkCreateDescriptorSetLayout :: CString -> Bool
+is_VkCreateDescriptorSetLayout
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorSetLayout
+
+type VkCreateDescriptorSetLayout = "vkCreateDescriptorSetLayout"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
+--           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+##else
+vkCreateDescriptorSetLayoutUnsafe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                        ->
+                                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                ->
+                                        Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                                  -> IO VkResult
+vkCreateDescriptorSetLayoutUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateDescriptorSetLayout)
+
+{-# NOINLINE vkCreateDescriptorSetLayoutUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
+--           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+##else
+vkCreateDescriptorSetLayoutSafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                      ->
+                                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              ->
+                                      Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                                -> IO VkResult
+vkCreateDescriptorSetLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDescriptorSetLayout)
+
+{-# NOINLINE vkCreateDescriptorSetLayoutSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
+--           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
+--
+vkCreateDescriptorSetLayout ::
+                            VkDevice -- ^ device
+                                     ->
+                              Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                  ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          ->
+                                  Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                            -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayoutUnsafe
+##else
+vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayoutSafe
+
+##endif
+{-# INLINE vkCreateDescriptorSetLayout #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorSetLayout* pSetLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+type HS_vkCreateDescriptorSetLayout =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                           ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                     -> IO VkResult
+
+type PFN_vkCreateDescriptorSetLayout =
+     FunPtr HS_vkCreateDescriptorSetLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorSetLayoutUnsafe ::
+               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorSetLayoutSafe ::
+               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
+
+instance VulkanProc "vkCreateDescriptorSetLayout" where
+        type VkProcType "vkCreateDescriptorSetLayout" =
+             HS_vkCreateDescriptorSetLayout
+        vkProcSymbol = _VkCreateDescriptorSetLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDescriptorSetLayoutUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorSetLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorSetLayout :: CString
+
+pattern VkDestroyDescriptorSetLayout <-
+        (is_VkDestroyDescriptorSetLayout -> True)
+  where VkDestroyDescriptorSetLayout = _VkDestroyDescriptorSetLayout
+
+{-# INLINE _VkDestroyDescriptorSetLayout #-}
+
+_VkDestroyDescriptorSetLayout :: CString
+_VkDestroyDescriptorSetLayout
+  = Ptr "vkDestroyDescriptorSetLayout\NUL"##
+
+{-# INLINE is_VkDestroyDescriptorSetLayout #-}
+
+is_VkDestroyDescriptorSetLayout :: CString -> Bool
+is_VkDestroyDescriptorSetLayout
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorSetLayout
+
+type VkDestroyDescriptorSetLayout = "vkDestroyDescriptorSetLayout"
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
+--           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyDescriptorSetLayoutUnsafe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroyDescriptorSetLayoutUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkDestroyDescriptorSetLayout)
+
+{-# NOINLINE vkDestroyDescriptorSetLayoutUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
+--           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyDescriptorSetLayoutSafe ::
+                                 VkDevice -- ^ device
+                                          ->
+                                   VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyDescriptorSetLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroyDescriptorSetLayout)
+
+{-# NOINLINE vkDestroyDescriptorSetLayoutSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
+--           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
+--
+vkDestroyDescriptorSetLayout ::
+                             VkDevice -- ^ device
+                                      ->
+                               VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayoutUnsafe
+##else
+vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayoutSafe
+
+##endif
+{-# INLINE vkDestroyDescriptorSetLayout #-}
+
+-- | > void vkDestroyDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , VkDescriptorSetLayout descriptorSetLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+type HS_vkDestroyDescriptorSetLayout =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorSetLayout -- ^ descriptorSetLayout
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyDescriptorSetLayout =
+     FunPtr HS_vkDestroyDescriptorSetLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorSetLayoutUnsafe ::
+               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorSetLayoutSafe ::
+               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
+
+instance VulkanProc "vkDestroyDescriptorSetLayout" where
+        type VkProcType "vkDestroyDescriptorSetLayout" =
+             HS_vkDestroyDescriptorSetLayout
+        vkProcSymbol = _VkDestroyDescriptorSetLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyDescriptorSetLayoutUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorSetLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDescriptorPool :: CString
+
+pattern VkCreateDescriptorPool <-
+        (is_VkCreateDescriptorPool -> True)
+  where VkCreateDescriptorPool = _VkCreateDescriptorPool
+
+{-# INLINE _VkCreateDescriptorPool #-}
+
+_VkCreateDescriptorPool :: CString
+_VkCreateDescriptorPool = Ptr "vkCreateDescriptorPool\NUL"##
+
+{-# INLINE is_VkCreateDescriptorPool #-}
+
+is_VkCreateDescriptorPool :: CString -> Bool
+is_VkCreateDescriptorPool
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorPool
+
+type VkCreateDescriptorPool = "vkCreateDescriptorPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
+--           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDescriptorPool"
+               vkCreateDescriptorPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+##else
+vkCreateDescriptorPoolUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                              ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                                   -> IO VkResult
+vkCreateDescriptorPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDescriptorPool)
+
+{-# NOINLINE vkCreateDescriptorPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
+--           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDescriptorPool"
+               vkCreateDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+##else
+vkCreateDescriptorPoolSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                            ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                                 -> IO VkResult
+vkCreateDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDescriptorPool)
+
+{-# NOINLINE vkCreateDescriptorPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
+--           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
+--
+vkCreateDescriptorPool ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateDescriptorPool = vkCreateDescriptorPoolUnsafe
+##else
+vkCreateDescriptorPool = vkCreateDescriptorPoolSafe
+
+##endif
+{-# INLINE vkCreateDescriptorPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+--   > VkResult vkCreateDescriptorPool
+--   >     ( VkDevice device
+--   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorPool* pDescriptorPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+type HS_vkCreateDescriptorPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                      ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                           -> IO VkResult
+
+type PFN_vkCreateDescriptorPool = FunPtr HS_vkCreateDescriptorPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorPoolUnsafe ::
+               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorPoolSafe ::
+               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
+
+instance VulkanProc "vkCreateDescriptorPool" where
+        type VkProcType "vkCreateDescriptorPool" =
+             HS_vkCreateDescriptorPool
+        vkProcSymbol = _VkCreateDescriptorPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDescriptorPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorPool :: CString
+
+pattern VkDestroyDescriptorPool <-
+        (is_VkDestroyDescriptorPool -> True)
+  where VkDestroyDescriptorPool = _VkDestroyDescriptorPool
+
+{-# INLINE _VkDestroyDescriptorPool #-}
+
+_VkDestroyDescriptorPool :: CString
+_VkDestroyDescriptorPool = Ptr "vkDestroyDescriptorPool\NUL"##
+
+{-# INLINE is_VkDestroyDescriptorPool #-}
+
+is_VkDestroyDescriptorPool :: CString -> Bool
+is_VkDestroyDescriptorPool
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorPool
+
+type VkDestroyDescriptorPool = "vkDestroyDescriptorPool"
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
+--           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyDescriptorPoolUnsafe ::
+                              VkDevice -- ^ device
+                                       -> VkDescriptorPool -- ^ descriptorPool
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroyDescriptorPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyDescriptorPool)
+
+{-# NOINLINE vkDestroyDescriptorPoolUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
+--           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyDescriptorPoolSafe ::
+                            VkDevice -- ^ device
+                                     -> VkDescriptorPool -- ^ descriptorPool
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDescriptorPool)
+
+{-# NOINLINE vkDestroyDescriptorPoolSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
+--           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
+--
+vkDestroyDescriptorPool ::
+                        VkDevice -- ^ device
+                                 -> VkDescriptorPool -- ^ descriptorPool
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDescriptorPool = vkDestroyDescriptorPoolUnsafe
+##else
+vkDestroyDescriptorPool = vkDestroyDescriptorPoolSafe
+
+##endif
+{-# INLINE vkDestroyDescriptorPool #-}
+
+-- | > void vkDestroyDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+type HS_vkDestroyDescriptorPool =
+     VkDevice -- ^ device
+              -> VkDescriptorPool -- ^ descriptorPool
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyDescriptorPool =
+     FunPtr HS_vkDestroyDescriptorPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorPoolUnsafe ::
+               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorPoolSafe ::
+               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
+
+instance VulkanProc "vkDestroyDescriptorPool" where
+        type VkProcType "vkDestroyDescriptorPool" =
+             HS_vkDestroyDescriptorPool
+        vkProcSymbol = _VkDestroyDescriptorPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyDescriptorPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetDescriptorPool :: CString
+
+pattern VkResetDescriptorPool <- (is_VkResetDescriptorPool -> True)
+  where VkResetDescriptorPool = _VkResetDescriptorPool
+
+{-# INLINE _VkResetDescriptorPool #-}
+
+_VkResetDescriptorPool :: CString
+_VkResetDescriptorPool = Ptr "vkResetDescriptorPool\NUL"##
+
+{-# INLINE is_VkResetDescriptorPool #-}
+
+is_VkResetDescriptorPool :: CString -> Bool
+is_VkResetDescriptorPool
+  = (EQ ==) . cmpCStrings _VkResetDescriptorPool
+
+type VkResetDescriptorPool = "vkResetDescriptorPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
+--           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetDescriptorPool"
+               vkResetDescriptorPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+##else
+vkResetDescriptorPoolUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkDescriptorPool -- ^ descriptorPool
+                                               -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                             -> IO VkResult
+vkResetDescriptorPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetDescriptorPool)
+
+{-# NOINLINE vkResetDescriptorPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
+--           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetDescriptorPool"
+               vkResetDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+##else
+vkResetDescriptorPoolSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkDescriptorPool -- ^ descriptorPool
+                                             -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                           -> IO VkResult
+vkResetDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetDescriptorPool)
+
+{-# NOINLINE vkResetDescriptorPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
+--           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
+--
+vkResetDescriptorPool ::
+                      VkDevice -- ^ device
+                               ->
+                        VkDescriptorPool -- ^ descriptorPool
+                                         -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetDescriptorPool = vkResetDescriptorPoolUnsafe
+##else
+vkResetDescriptorPool = vkResetDescriptorPoolSafe
+
+##endif
+{-# INLINE vkResetDescriptorPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , VkDescriptorPoolResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+type HS_vkResetDescriptorPool =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorPool -- ^ descriptorPool
+                        -> VkDescriptorPoolResetFlags -- ^ flags
+                                                      -> IO VkResult
+
+type PFN_vkResetDescriptorPool = FunPtr HS_vkResetDescriptorPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkResetDescriptorPoolUnsafe ::
+               PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
+
+foreign import ccall safe "dynamic" unwrapVkResetDescriptorPoolSafe
+               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
+
+instance VulkanProc "vkResetDescriptorPool" where
+        type VkProcType "vkResetDescriptorPool" = HS_vkResetDescriptorPool
+        vkProcSymbol = _VkResetDescriptorPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkResetDescriptorPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkResetDescriptorPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateDescriptorSets :: CString
+
+pattern VkAllocateDescriptorSets <-
+        (is_VkAllocateDescriptorSets -> True)
+  where VkAllocateDescriptorSets = _VkAllocateDescriptorSets
+
+{-# INLINE _VkAllocateDescriptorSets #-}
+
+_VkAllocateDescriptorSets :: CString
+_VkAllocateDescriptorSets = Ptr "vkAllocateDescriptorSets\NUL"##
+
+{-# INLINE is_VkAllocateDescriptorSets #-}
+
+is_VkAllocateDescriptorSets :: CString -> Bool
+is_VkAllocateDescriptorSets
+  = (EQ ==) . cmpCStrings _VkAllocateDescriptorSets
+
+type VkAllocateDescriptorSets = "vkAllocateDescriptorSets"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
+--           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSetsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+##else
+vkAllocateDescriptorSetsUnsafe ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                                 ->
+                                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                       -> IO VkResult
+vkAllocateDescriptorSetsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkAllocateDescriptorSets)
+
+{-# NOINLINE vkAllocateDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
+--           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+##else
+vkAllocateDescriptorSetsSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                               ->
+                                 Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> IO VkResult
+vkAllocateDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateDescriptorSets)
+
+{-# NOINLINE vkAllocateDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
+--           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
+--
+vkAllocateDescriptorSets ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                           ->
+                             Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkAllocateDescriptorSets = vkAllocateDescriptorSetsUnsafe
+##else
+vkAllocateDescriptorSets = vkAllocateDescriptorSetsSafe
+
+##endif
+{-# INLINE vkAllocateDescriptorSets #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+--   > VkResult vkAllocateDescriptorSets
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+--   >     , VkDescriptorSet* pDescriptorSets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+type HS_vkAllocateDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                       ->
+         Ptr VkDescriptorSet -- ^ pDescriptorSets
+                             -> IO VkResult
+
+type PFN_vkAllocateDescriptorSets =
+     FunPtr HS_vkAllocateDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkAllocateDescriptorSetsUnsafe ::
+               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkAllocateDescriptorSetsSafe ::
+               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
+
+instance VulkanProc "vkAllocateDescriptorSets" where
+        type VkProcType "vkAllocateDescriptorSets" =
+             HS_vkAllocateDescriptorSets
+        vkProcSymbol = _VkAllocateDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkAllocateDescriptorSetsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkAllocateDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeDescriptorSets :: CString
+
+pattern VkFreeDescriptorSets <- (is_VkFreeDescriptorSets -> True)
+  where VkFreeDescriptorSets = _VkFreeDescriptorSets
+
+{-# INLINE _VkFreeDescriptorSets #-}
+
+_VkFreeDescriptorSets :: CString
+_VkFreeDescriptorSets = Ptr "vkFreeDescriptorSets\NUL"##
+
+{-# INLINE is_VkFreeDescriptorSets #-}
+
+is_VkFreeDescriptorSets :: CString -> Bool
+is_VkFreeDescriptorSets
+  = (EQ ==) . cmpCStrings _VkFreeDescriptorSets
+
+type VkFreeDescriptorSets = "vkFreeDescriptorSets"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
+--           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeDescriptorSets"
+               vkFreeDescriptorSetsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+##else
+vkFreeDescriptorSetsUnsafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             VkDescriptorPool -- ^ descriptorPool
+                                              -> Word32 -- ^ descriptorSetCount
+                                                        -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                               -> IO VkResult
+vkFreeDescriptorSetsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeDescriptorSets)
+
+{-# NOINLINE vkFreeDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
+--           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeDescriptorSets"
+               vkFreeDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+##else
+vkFreeDescriptorSetsSafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkDescriptorPool -- ^ descriptorPool
+                                            -> Word32 -- ^ descriptorSetCount
+                                                      -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                             -> IO VkResult
+vkFreeDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeDescriptorSets)
+
+{-# NOINLINE vkFreeDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
+--           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
+--
+vkFreeDescriptorSets ::
+                     VkDevice -- ^ device
+                              ->
+                       VkDescriptorPool -- ^ descriptorPool
+                                        -> Word32 -- ^ descriptorSetCount
+                                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                         -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkFreeDescriptorSets = vkFreeDescriptorSetsUnsafe
+##else
+vkFreeDescriptorSets = vkFreeDescriptorSetsSafe
+
+##endif
+{-# INLINE vkFreeDescriptorSets #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkFreeDescriptorSets
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , uint32_t descriptorSetCount
+--   >     , const VkDescriptorSet* pDescriptorSets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+type HS_vkFreeDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorPool -- ^ descriptorPool
+                        -> Word32 -- ^ descriptorSetCount
+                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                         -> IO VkResult
+
+type PFN_vkFreeDescriptorSets = FunPtr HS_vkFreeDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFreeDescriptorSetsUnsafe ::
+               PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
+
+foreign import ccall safe "dynamic" unwrapVkFreeDescriptorSetsSafe
+               :: PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
+
+instance VulkanProc "vkFreeDescriptorSets" where
+        type VkProcType "vkFreeDescriptorSets" = HS_vkFreeDescriptorSets
+        vkProcSymbol = _VkFreeDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkFreeDescriptorSetsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkFreeDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUpdateDescriptorSets :: CString
+
+pattern VkUpdateDescriptorSets <-
+        (is_VkUpdateDescriptorSets -> True)
+  where VkUpdateDescriptorSets = _VkUpdateDescriptorSets
+
+{-# INLINE _VkUpdateDescriptorSets #-}
+
+_VkUpdateDescriptorSets :: CString
+_VkUpdateDescriptorSets = Ptr "vkUpdateDescriptorSets\NUL"##
+
+{-# INLINE is_VkUpdateDescriptorSets #-}
+
+is_VkUpdateDescriptorSets :: CString -> Bool
+is_VkUpdateDescriptorSets
+  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSets
+
+type VkUpdateDescriptorSets = "vkUpdateDescriptorSets"
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
+--           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSetsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+##else
+vkUpdateDescriptorSetsUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Word32 -- ^ descriptorWriteCount
+                                      ->
+                                 Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                          ->
+                                   Word32 -- ^ descriptorCopyCount
+                                          -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                                     -> IO ()
+vkUpdateDescriptorSetsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkUpdateDescriptorSets)
+
+{-# NOINLINE vkUpdateDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
+--           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+##else
+vkUpdateDescriptorSetsSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Word32 -- ^ descriptorWriteCount
+                                    ->
+                               Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                        ->
+                                 Word32 -- ^ descriptorCopyCount
+                                        -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                                   -> IO ()
+vkUpdateDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkUpdateDescriptorSets)
+
+{-# NOINLINE vkUpdateDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
+--           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
+--
+vkUpdateDescriptorSets ::
+                       VkDevice -- ^ device
+                                ->
+                         Word32 -- ^ descriptorWriteCount
+                                ->
+                           Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                    ->
+                             Word32 -- ^ descriptorCopyCount
+                                    -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                               -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkUpdateDescriptorSets = vkUpdateDescriptorSetsUnsafe
+##else
+vkUpdateDescriptorSets = vkUpdateDescriptorSetsSafe
+
+##endif
+{-# INLINE vkUpdateDescriptorSets #-}
+
+-- | > void vkUpdateDescriptorSets
+--   >     ( VkDevice device
+--   >     , uint32_t descriptorWriteCount
+--   >     , const VkWriteDescriptorSet* pDescriptorWrites
+--   >     , uint32_t descriptorCopyCount
+--   >     , const VkCopyDescriptorSet* pDescriptorCopies
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+type HS_vkUpdateDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ descriptorWriteCount
+              ->
+         Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                  ->
+           Word32 -- ^ descriptorCopyCount
+                  -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                             -> IO ()
+
+type PFN_vkUpdateDescriptorSets = FunPtr HS_vkUpdateDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkUpdateDescriptorSetsUnsafe ::
+               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetsSafe ::
+               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
+
+instance VulkanProc "vkUpdateDescriptorSets" where
+        type VkProcType "vkUpdateDescriptorSets" =
+             HS_vkUpdateDescriptorSets
+        vkProcSymbol = _VkUpdateDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkUpdateDescriptorSetsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateFramebuffer :: CString
+
+pattern VkCreateFramebuffer <- (is_VkCreateFramebuffer -> True)
+  where VkCreateFramebuffer = _VkCreateFramebuffer
+
+{-# INLINE _VkCreateFramebuffer #-}
+
+_VkCreateFramebuffer :: CString
+_VkCreateFramebuffer = Ptr "vkCreateFramebuffer\NUL"##
+
+{-# INLINE is_VkCreateFramebuffer #-}
+
+is_VkCreateFramebuffer :: CString -> Bool
+is_VkCreateFramebuffer = (EQ ==) . cmpCStrings _VkCreateFramebuffer
+
+type VkCreateFramebuffer = "vkCreateFramebuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
+--           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateFramebuffer"
+               vkCreateFramebufferUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+##else
+vkCreateFramebufferUnsafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                        ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                             -> IO VkResult
+vkCreateFramebufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateFramebuffer)
+
+{-# NOINLINE vkCreateFramebufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
+--           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateFramebuffer"
+               vkCreateFramebufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+##else
+vkCreateFramebufferSafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                      ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                           -> IO VkResult
+vkCreateFramebufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFramebuffer)
+
+{-# NOINLINE vkCreateFramebufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
+--           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
+--
+vkCreateFramebuffer ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                  ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateFramebuffer = vkCreateFramebufferUnsafe
+##else
+vkCreateFramebuffer = vkCreateFramebufferSafe
+
+##endif
+{-# INLINE vkCreateFramebuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateFramebuffer
+--   >     ( VkDevice device
+--   >     , const VkFramebufferCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFramebuffer* pFramebuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+type HS_vkCreateFramebuffer =
+     VkDevice -- ^ device
+              ->
+       Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                   ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                        -> IO VkResult
+
+type PFN_vkCreateFramebuffer = FunPtr HS_vkCreateFramebuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateFramebufferUnsafe ::
+               PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
+
+foreign import ccall safe "dynamic" unwrapVkCreateFramebufferSafe
+               :: PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
+
+instance VulkanProc "vkCreateFramebuffer" where
+        type VkProcType "vkCreateFramebuffer" = HS_vkCreateFramebuffer
+        vkProcSymbol = _VkCreateFramebuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateFramebufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateFramebufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyFramebuffer :: CString
+
+pattern VkDestroyFramebuffer <- (is_VkDestroyFramebuffer -> True)
+  where VkDestroyFramebuffer = _VkDestroyFramebuffer
+
+{-# INLINE _VkDestroyFramebuffer #-}
+
+_VkDestroyFramebuffer :: CString
+_VkDestroyFramebuffer = Ptr "vkDestroyFramebuffer\NUL"##
+
+{-# INLINE is_VkDestroyFramebuffer #-}
+
+is_VkDestroyFramebuffer :: CString -> Bool
+is_VkDestroyFramebuffer
+  = (EQ ==) . cmpCStrings _VkDestroyFramebuffer
+
+type VkDestroyFramebuffer = "vkDestroyFramebuffer"
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
+--           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyFramebuffer"
+               vkDestroyFramebufferUnsafe ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyFramebufferUnsafe ::
+                           VkDevice -- ^ device
+                                    -> VkFramebuffer -- ^ framebuffer
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyFramebufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyFramebuffer)
+
+{-# NOINLINE vkDestroyFramebufferUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
+--           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyFramebuffer"
+               vkDestroyFramebufferSafe ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyFramebufferSafe ::
+                         VkDevice -- ^ device
+                                  -> VkFramebuffer -- ^ framebuffer
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyFramebufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFramebuffer)
+
+{-# NOINLINE vkDestroyFramebufferSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
+--           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
+--
+vkDestroyFramebuffer ::
+                     VkDevice -- ^ device
+                              -> VkFramebuffer -- ^ framebuffer
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyFramebuffer = vkDestroyFramebufferUnsafe
+##else
+vkDestroyFramebuffer = vkDestroyFramebufferSafe
+
+##endif
+{-# INLINE vkDestroyFramebuffer #-}
+
+-- | > void vkDestroyFramebuffer
+--   >     ( VkDevice device
+--   >     , VkFramebuffer framebuffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+type HS_vkDestroyFramebuffer =
+     VkDevice -- ^ device
+              -> VkFramebuffer -- ^ framebuffer
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+
+type PFN_vkDestroyFramebuffer = FunPtr HS_vkDestroyFramebuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyFramebufferUnsafe ::
+               PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
+
+foreign import ccall safe "dynamic" unwrapVkDestroyFramebufferSafe
+               :: PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
+
+instance VulkanProc "vkDestroyFramebuffer" where
+        type VkProcType "vkDestroyFramebuffer" = HS_vkDestroyFramebuffer
+        vkProcSymbol = _VkDestroyFramebuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyFramebufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyFramebufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateRenderPass :: CString
+
+pattern VkCreateRenderPass <- (is_VkCreateRenderPass -> True)
+  where VkCreateRenderPass = _VkCreateRenderPass
+
+{-# INLINE _VkCreateRenderPass #-}
+
+_VkCreateRenderPass :: CString
+_VkCreateRenderPass = Ptr "vkCreateRenderPass\NUL"##
+
+{-# INLINE is_VkCreateRenderPass #-}
+
+is_VkCreateRenderPass :: CString -> Bool
+is_VkCreateRenderPass = (EQ ==) . cmpCStrings _VkCreateRenderPass
+
+type VkCreateRenderPass = "vkCreateRenderPass"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
+--           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateRenderPass"
+               vkCreateRenderPassUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+##else
+vkCreateRenderPassUnsafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                      ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                           -> IO VkResult
+vkCreateRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateRenderPass)
+
+{-# NOINLINE vkCreateRenderPassUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
+--           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateRenderPass"
+               vkCreateRenderPassSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+##else
+vkCreateRenderPassSafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                    ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                         -> IO VkResult
+vkCreateRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateRenderPass)
+
+{-# NOINLINE vkCreateRenderPassSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
+--           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
+--
+vkCreateRenderPass ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateRenderPass = vkCreateRenderPassUnsafe
+##else
+vkCreateRenderPass = vkCreateRenderPassSafe
+
+##endif
+{-# INLINE vkCreateRenderPass #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateRenderPass
+--   >     ( VkDevice device
+--   >     , const VkRenderPassCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkRenderPass* pRenderPass
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+type HS_vkCreateRenderPass =
+     VkDevice -- ^ device
+              ->
+       Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                  ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkRenderPass -- ^ pRenderPass
+                                                       -> IO VkResult
+
+type PFN_vkCreateRenderPass = FunPtr HS_vkCreateRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateRenderPassUnsafe ::
+               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCreateRenderPassSafe ::
+               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
+
+instance VulkanProc "vkCreateRenderPass" where
+        type VkProcType "vkCreateRenderPass" = HS_vkCreateRenderPass
+        vkProcSymbol = _VkCreateRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateRenderPassUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyRenderPass :: CString
+
+pattern VkDestroyRenderPass <- (is_VkDestroyRenderPass -> True)
+  where VkDestroyRenderPass = _VkDestroyRenderPass
+
+{-# INLINE _VkDestroyRenderPass #-}
+
+_VkDestroyRenderPass :: CString
+_VkDestroyRenderPass = Ptr "vkDestroyRenderPass\NUL"##
+
+{-# INLINE is_VkDestroyRenderPass #-}
+
+is_VkDestroyRenderPass :: CString -> Bool
+is_VkDestroyRenderPass = (EQ ==) . cmpCStrings _VkDestroyRenderPass
+
+type VkDestroyRenderPass = "vkDestroyRenderPass"
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
+--           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyRenderPass"
+               vkDestroyRenderPassUnsafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyRenderPassUnsafe ::
+                          VkDevice -- ^ device
+                                   -> VkRenderPass -- ^ renderPass
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyRenderPass)
+
+{-# NOINLINE vkDestroyRenderPassUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
+--           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyRenderPass"
+               vkDestroyRenderPassSafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyRenderPassSafe ::
+                        VkDevice -- ^ device
+                                 -> VkRenderPass -- ^ renderPass
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyRenderPass)
+
+{-# NOINLINE vkDestroyRenderPassSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
+--           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
+--
+vkDestroyRenderPass ::
+                    VkDevice -- ^ device
+                             -> VkRenderPass -- ^ renderPass
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyRenderPass = vkDestroyRenderPassUnsafe
+##else
+vkDestroyRenderPass = vkDestroyRenderPassSafe
+
+##endif
+{-# INLINE vkDestroyRenderPass #-}
+
+-- | > void vkDestroyRenderPass
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+type HS_vkDestroyRenderPass =
+     VkDevice -- ^ device
+              -> VkRenderPass -- ^ renderPass
+                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> IO ()
+
+type PFN_vkDestroyRenderPass = FunPtr HS_vkDestroyRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyRenderPassUnsafe ::
+               PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkDestroyRenderPassSafe
+               :: PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
+
+instance VulkanProc "vkDestroyRenderPass" where
+        type VkProcType "vkDestroyRenderPass" = HS_vkDestroyRenderPass
+        vkProcSymbol = _VkDestroyRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyRenderPassUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetRenderAreaGranularity :: CString
+
+pattern VkGetRenderAreaGranularity <-
+        (is_VkGetRenderAreaGranularity -> True)
+  where VkGetRenderAreaGranularity = _VkGetRenderAreaGranularity
+
+{-# INLINE _VkGetRenderAreaGranularity #-}
+
+_VkGetRenderAreaGranularity :: CString
+_VkGetRenderAreaGranularity = Ptr "vkGetRenderAreaGranularity\NUL"##
+
+{-# INLINE is_VkGetRenderAreaGranularity #-}
+
+is_VkGetRenderAreaGranularity :: CString -> Bool
+is_VkGetRenderAreaGranularity
+  = (EQ ==) . cmpCStrings _VkGetRenderAreaGranularity
+
+type VkGetRenderAreaGranularity = "vkGetRenderAreaGranularity"
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
+--           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularityUnsafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+##else
+vkGetRenderAreaGranularityUnsafe ::
+                                 VkDevice -- ^ device
+                                          -> VkRenderPass -- ^ renderPass
+                                                          -> Ptr VkExtent2D -- ^ pGranularity
+                                                                            -> IO ()
+vkGetRenderAreaGranularityUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetRenderAreaGranularity)
+
+{-# NOINLINE vkGetRenderAreaGranularityUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
+--           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularitySafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+##else
+vkGetRenderAreaGranularitySafe ::
+                               VkDevice -- ^ device
+                                        -> VkRenderPass -- ^ renderPass
+                                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                                          -> IO ()
+vkGetRenderAreaGranularitySafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetRenderAreaGranularity)
+
+{-# NOINLINE vkGetRenderAreaGranularitySafe #-}
+##endif
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
+--           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
+--
+vkGetRenderAreaGranularity ::
+                           VkDevice -- ^ device
+                                    -> VkRenderPass -- ^ renderPass
+                                                    -> Ptr VkExtent2D -- ^ pGranularity
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetRenderAreaGranularity = vkGetRenderAreaGranularityUnsafe
+##else
+vkGetRenderAreaGranularity = vkGetRenderAreaGranularitySafe
+
+##endif
+{-# INLINE vkGetRenderAreaGranularity #-}
+
+-- | > void vkGetRenderAreaGranularity
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , VkExtent2D* pGranularity
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+type HS_vkGetRenderAreaGranularity =
+     VkDevice -- ^ device
+              -> VkRenderPass -- ^ renderPass
+                              -> Ptr VkExtent2D -- ^ pGranularity
+                                                -> IO ()
+
+type PFN_vkGetRenderAreaGranularity =
+     FunPtr HS_vkGetRenderAreaGranularity
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetRenderAreaGranularityUnsafe ::
+               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetRenderAreaGranularitySafe ::
+               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
+
+instance VulkanProc "vkGetRenderAreaGranularity" where
+        type VkProcType "vkGetRenderAreaGranularity" =
+             HS_vkGetRenderAreaGranularity
+        vkProcSymbol = _VkGetRenderAreaGranularity
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetRenderAreaGranularityUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetRenderAreaGranularitySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateCommandPool :: CString
+
+pattern VkCreateCommandPool <- (is_VkCreateCommandPool -> True)
+  where VkCreateCommandPool = _VkCreateCommandPool
+
+{-# INLINE _VkCreateCommandPool #-}
+
+_VkCreateCommandPool :: CString
+_VkCreateCommandPool = Ptr "vkCreateCommandPool\NUL"##
+
+{-# INLINE is_VkCreateCommandPool #-}
+
+is_VkCreateCommandPool :: CString -> Bool
+is_VkCreateCommandPool = (EQ ==) . cmpCStrings _VkCreateCommandPool
+
+type VkCreateCommandPool = "vkCreateCommandPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
+--           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateCommandPool"
+               vkCreateCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+##else
+vkCreateCommandPoolUnsafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                        ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                             -> IO VkResult
+vkCreateCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateCommandPool)
+
+{-# NOINLINE vkCreateCommandPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
+--           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateCommandPool"
+               vkCreateCommandPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+##else
+vkCreateCommandPoolSafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                      ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                           -> IO VkResult
+vkCreateCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateCommandPool)
+
+{-# NOINLINE vkCreateCommandPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
+--           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
+--
+vkCreateCommandPool ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                  ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateCommandPool = vkCreateCommandPoolUnsafe
+##else
+vkCreateCommandPool = vkCreateCommandPoolSafe
+
+##endif
+{-# INLINE vkCreateCommandPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateCommandPool
+--   >     ( VkDevice device
+--   >     , const VkCommandPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkCommandPool* pCommandPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+type HS_vkCreateCommandPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                   ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkCommandPool -- ^ pCommandPool
+                                                        -> IO VkResult
+
+type PFN_vkCreateCommandPool = FunPtr HS_vkCreateCommandPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateCommandPoolUnsafe ::
+               PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkCreateCommandPoolSafe
+               :: PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
+
+instance VulkanProc "vkCreateCommandPool" where
+        type VkProcType "vkCreateCommandPool" = HS_vkCreateCommandPool
+        vkProcSymbol = _VkCreateCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateCommandPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyCommandPool :: CString
+
+pattern VkDestroyCommandPool <- (is_VkDestroyCommandPool -> True)
+  where VkDestroyCommandPool = _VkDestroyCommandPool
+
+{-# INLINE _VkDestroyCommandPool #-}
+
+_VkDestroyCommandPool :: CString
+_VkDestroyCommandPool = Ptr "vkDestroyCommandPool\NUL"##
+
+{-# INLINE is_VkDestroyCommandPool #-}
+
+is_VkDestroyCommandPool :: CString -> Bool
+is_VkDestroyCommandPool
+  = (EQ ==) . cmpCStrings _VkDestroyCommandPool
+
+type VkDestroyCommandPool = "vkDestroyCommandPool"
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
+--           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyCommandPool"
+               vkDestroyCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyCommandPoolUnsafe ::
+                           VkDevice -- ^ device
+                                    -> VkCommandPool -- ^ commandPool
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyCommandPool)
+
+{-# NOINLINE vkDestroyCommandPoolUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
+--           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyCommandPool"
+               vkDestroyCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyCommandPoolSafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyCommandPool)
+
+{-# NOINLINE vkDestroyCommandPoolSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
+--           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
+--
+vkDestroyCommandPool ::
+                     VkDevice -- ^ device
+                              -> VkCommandPool -- ^ commandPool
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyCommandPool = vkDestroyCommandPoolUnsafe
+##else
+vkDestroyCommandPool = vkDestroyCommandPoolSafe
+
+##endif
+{-# INLINE vkDestroyCommandPool #-}
+
+-- | > void vkDestroyCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+type HS_vkDestroyCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+
+type PFN_vkDestroyCommandPool = FunPtr HS_vkDestroyCommandPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyCommandPoolUnsafe ::
+               PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkDestroyCommandPoolSafe
+               :: PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
+
+instance VulkanProc "vkDestroyCommandPool" where
+        type VkProcType "vkDestroyCommandPool" = HS_vkDestroyCommandPool
+        vkProcSymbol = _VkDestroyCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyCommandPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetCommandPool :: CString
+
+pattern VkResetCommandPool <- (is_VkResetCommandPool -> True)
+  where VkResetCommandPool = _VkResetCommandPool
+
+{-# INLINE _VkResetCommandPool #-}
+
+_VkResetCommandPool :: CString
+_VkResetCommandPool = Ptr "vkResetCommandPool\NUL"##
+
+{-# INLINE is_VkResetCommandPool #-}
+
+is_VkResetCommandPool :: CString -> Bool
+is_VkResetCommandPool = (EQ ==) . cmpCStrings _VkResetCommandPool
+
+type VkResetCommandPool = "vkResetCommandPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
+--           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetCommandPool"
+               vkResetCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+##else
+vkResetCommandPoolUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> VkCommandPoolResetFlags -- ^ flags
+                                                                              -> IO VkResult
+vkResetCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetCommandPool)
+
+{-# NOINLINE vkResetCommandPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
+--           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetCommandPool"
+               vkResetCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+##else
+vkResetCommandPoolSafe ::
+                       VkDevice -- ^ device
+                                -> VkCommandPool -- ^ commandPool
+                                                 -> VkCommandPoolResetFlags -- ^ flags
+                                                                            -> IO VkResult
+vkResetCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandPool)
+
+{-# NOINLINE vkResetCommandPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
+--           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
+--
+vkResetCommandPool ::
+                   VkDevice -- ^ device
+                            -> VkCommandPool -- ^ commandPool
+                                             -> VkCommandPoolResetFlags -- ^ flags
+                                                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetCommandPool = vkResetCommandPoolUnsafe
+##else
+vkResetCommandPool = vkResetCommandPoolSafe
+
+##endif
+{-# INLINE vkResetCommandPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+type HS_vkResetCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> VkCommandPoolResetFlags -- ^ flags
+                                                          -> IO VkResult
+
+type PFN_vkResetCommandPool = FunPtr HS_vkResetCommandPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkResetCommandPoolUnsafe ::
+               PFN_vkResetCommandPool -> HS_vkResetCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkResetCommandPoolSafe ::
+               PFN_vkResetCommandPool -> HS_vkResetCommandPool
+
+instance VulkanProc "vkResetCommandPool" where
+        type VkProcType "vkResetCommandPool" = HS_vkResetCommandPool
+        vkProcSymbol = _VkResetCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkResetCommandPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkResetCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateCommandBuffers :: CString
+
+pattern VkAllocateCommandBuffers <-
+        (is_VkAllocateCommandBuffers -> True)
+  where VkAllocateCommandBuffers = _VkAllocateCommandBuffers
+
+{-# INLINE _VkAllocateCommandBuffers #-}
+
+_VkAllocateCommandBuffers :: CString
+_VkAllocateCommandBuffers = Ptr "vkAllocateCommandBuffers\NUL"##
+
+{-# INLINE is_VkAllocateCommandBuffers #-}
+
+is_VkAllocateCommandBuffers :: CString -> Bool
+is_VkAllocateCommandBuffers
+  = (EQ ==) . cmpCStrings _VkAllocateCommandBuffers
+
+type VkAllocateCommandBuffers = "vkAllocateCommandBuffers"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
+--           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffersUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+##else
+vkAllocateCommandBuffersUnsafe ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                                 ->
+                                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                       -> IO VkResult
+vkAllocateCommandBuffersUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkAllocateCommandBuffers)
+
+{-# NOINLINE vkAllocateCommandBuffersUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
+--           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+##else
+vkAllocateCommandBuffersSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                               ->
+                                 Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                     -> IO VkResult
+vkAllocateCommandBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateCommandBuffers)
+
+{-# NOINLINE vkAllocateCommandBuffersSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
+--           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
+--
+vkAllocateCommandBuffers ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                           ->
+                             Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkAllocateCommandBuffers = vkAllocateCommandBuffersUnsafe
+##else
+vkAllocateCommandBuffers = vkAllocateCommandBuffersSafe
+
+##endif
+{-# INLINE vkAllocateCommandBuffers #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkAllocateCommandBuffers
+--   >     ( VkDevice device
+--   >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+--   >     , VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+type HS_vkAllocateCommandBuffers =
+     VkDevice -- ^ device
+              ->
+       Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                       ->
+         Ptr VkCommandBuffer -- ^ pCommandBuffers
+                             -> IO VkResult
+
+type PFN_vkAllocateCommandBuffers =
+     FunPtr HS_vkAllocateCommandBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkAllocateCommandBuffersUnsafe ::
+               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
+
+foreign import ccall safe "dynamic"
+               unwrapVkAllocateCommandBuffersSafe ::
+               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
+
+instance VulkanProc "vkAllocateCommandBuffers" where
+        type VkProcType "vkAllocateCommandBuffers" =
+             HS_vkAllocateCommandBuffers
+        vkProcSymbol = _VkAllocateCommandBuffers
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkAllocateCommandBuffersUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkAllocateCommandBuffersSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeCommandBuffers :: CString
+
+pattern VkFreeCommandBuffers <- (is_VkFreeCommandBuffers -> True)
+  where VkFreeCommandBuffers = _VkFreeCommandBuffers
+
+{-# INLINE _VkFreeCommandBuffers #-}
+
+_VkFreeCommandBuffers :: CString
+_VkFreeCommandBuffers = Ptr "vkFreeCommandBuffers\NUL"##
+
+{-# INLINE is_VkFreeCommandBuffers #-}
+
+is_VkFreeCommandBuffers :: CString -> Bool
+is_VkFreeCommandBuffers
+  = (EQ ==) . cmpCStrings _VkFreeCommandBuffers
+
+type VkFreeCommandBuffers = "vkFreeCommandBuffers"
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
+--           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeCommandBuffers"
+               vkFreeCommandBuffersUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+##else
+vkFreeCommandBuffersUnsafe ::
+                           VkDevice -- ^ device
+                                    -> VkCommandPool -- ^ commandPool
+                                                     -> Word32 -- ^ commandBufferCount
+                                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                      -> IO ()
+vkFreeCommandBuffersUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeCommandBuffers)
+
+{-# NOINLINE vkFreeCommandBuffersUnsafe #-}
+##endif
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
+--           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeCommandBuffers"
+               vkFreeCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+##else
+vkFreeCommandBuffersSafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> Word32 -- ^ commandBufferCount
+                                                             -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                    -> IO ()
+vkFreeCommandBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeCommandBuffers)
+
+{-# NOINLINE vkFreeCommandBuffersSafe #-}
+##endif
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
+--           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
+--
+vkFreeCommandBuffers ::
+                     VkDevice -- ^ device
+                              -> VkCommandPool -- ^ commandPool
+                                               -> Word32 -- ^ commandBufferCount
+                                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkFreeCommandBuffers = vkFreeCommandBuffersUnsafe
+##else
+vkFreeCommandBuffers = vkFreeCommandBuffersSafe
+
+##endif
+{-# INLINE vkFreeCommandBuffers #-}
+
+-- | > void vkFreeCommandBuffers
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+type HS_vkFreeCommandBuffers =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+type PFN_vkFreeCommandBuffers = FunPtr HS_vkFreeCommandBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFreeCommandBuffersUnsafe ::
+               PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
+
+foreign import ccall safe "dynamic" unwrapVkFreeCommandBuffersSafe
+               :: PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
+
+instance VulkanProc "vkFreeCommandBuffers" where
+        type VkProcType "vkFreeCommandBuffers" = HS_vkFreeCommandBuffers
+        vkProcSymbol = _VkFreeCommandBuffers
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkFreeCommandBuffersUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkFreeCommandBuffersSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBeginCommandBuffer :: CString
+
+pattern VkBeginCommandBuffer <- (is_VkBeginCommandBuffer -> True)
+  where VkBeginCommandBuffer = _VkBeginCommandBuffer
+
+{-# INLINE _VkBeginCommandBuffer #-}
+
+_VkBeginCommandBuffer :: CString
+_VkBeginCommandBuffer = Ptr "vkBeginCommandBuffer\NUL"##
+
+{-# INLINE is_VkBeginCommandBuffer #-}
+
+is_VkBeginCommandBuffer :: CString -> Bool
+is_VkBeginCommandBuffer
+  = (EQ ==) . cmpCStrings _VkBeginCommandBuffer
+
+type VkBeginCommandBuffer = "vkBeginCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
+--           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBeginCommandBuffer"
+               vkBeginCommandBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+##else
+vkBeginCommandBufferUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                           -> IO VkResult
+vkBeginCommandBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBeginCommandBuffer)
+
+{-# NOINLINE vkBeginCommandBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
+--           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBeginCommandBuffer"
+               vkBeginCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+##else
+vkBeginCommandBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                         -> IO VkResult
+vkBeginCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBeginCommandBuffer)
+
+{-# NOINLINE vkBeginCommandBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
+--           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
+--
+vkBeginCommandBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkBeginCommandBuffer = vkBeginCommandBufferUnsafe
+##else
+vkBeginCommandBuffer = vkBeginCommandBufferSafe
+
+##endif
+{-# INLINE vkBeginCommandBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBeginCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkCommandBufferBeginInfo* pBeginInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+type HS_vkBeginCommandBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                     -> IO VkResult
+
+type PFN_vkBeginCommandBuffer = FunPtr HS_vkBeginCommandBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBeginCommandBufferUnsafe ::
+               PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkBeginCommandBufferSafe
+               :: PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
+
+instance VulkanProc "vkBeginCommandBuffer" where
+        type VkProcType "vkBeginCommandBuffer" = HS_vkBeginCommandBuffer
+        vkProcSymbol = _VkBeginCommandBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkBeginCommandBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkBeginCommandBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEndCommandBuffer :: CString
+
+pattern VkEndCommandBuffer <- (is_VkEndCommandBuffer -> True)
+  where VkEndCommandBuffer = _VkEndCommandBuffer
+
+{-# INLINE _VkEndCommandBuffer #-}
+
+_VkEndCommandBuffer :: CString
+_VkEndCommandBuffer = Ptr "vkEndCommandBuffer\NUL"##
+
+{-# INLINE is_VkEndCommandBuffer #-}
+
+is_VkEndCommandBuffer :: CString -> Bool
+is_VkEndCommandBuffer = (EQ ==) . cmpCStrings _VkEndCommandBuffer
+
+type VkEndCommandBuffer = "vkEndCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
+--           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEndCommandBuffer"
+               vkEndCommandBufferUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                                           -> IO VkResult
+
+##else
+vkEndCommandBufferUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                            -> IO VkResult
+vkEndCommandBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkEndCommandBuffer)
+
+{-# NOINLINE vkEndCommandBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
+--           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEndCommandBuffer"
+               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO VkResult
+
+##else
+vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> IO VkResult
+vkEndCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkEndCommandBuffer)
+
+{-# NOINLINE vkEndCommandBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
+--           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
+--
+vkEndCommandBuffer :: VkCommandBuffer -- ^ commandBuffer
+                                      -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEndCommandBuffer = vkEndCommandBufferUnsafe
+##else
+vkEndCommandBuffer = vkEndCommandBufferSafe
+
+##endif
+{-# INLINE vkEndCommandBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEndCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+type HS_vkEndCommandBuffer = VkCommandBuffer -- ^ commandBuffer
+                                             -> IO VkResult
+
+type PFN_vkEndCommandBuffer = FunPtr HS_vkEndCommandBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEndCommandBufferUnsafe ::
+               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkEndCommandBufferSafe ::
+               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
+
+instance VulkanProc "vkEndCommandBuffer" where
+        type VkProcType "vkEndCommandBuffer" = HS_vkEndCommandBuffer
+        vkProcSymbol = _VkEndCommandBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkEndCommandBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkEndCommandBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetCommandBuffer :: CString
+
+pattern VkResetCommandBuffer <- (is_VkResetCommandBuffer -> True)
+  where VkResetCommandBuffer = _VkResetCommandBuffer
+
+{-# INLINE _VkResetCommandBuffer #-}
+
+_VkResetCommandBuffer :: CString
+_VkResetCommandBuffer = Ptr "vkResetCommandBuffer\NUL"##
+
+{-# INLINE is_VkResetCommandBuffer #-}
+
+is_VkResetCommandBuffer :: CString -> Bool
+is_VkResetCommandBuffer
+  = (EQ ==) . cmpCStrings _VkResetCommandBuffer
+
+type VkResetCommandBuffer = "vkResetCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
+--           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetCommandBuffer"
+               vkResetCommandBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+##else
+vkResetCommandBufferUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkCommandBufferResetFlags -- ^ flags
+                                                                        -> IO VkResult
+vkResetCommandBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetCommandBuffer)
+
+{-# NOINLINE vkResetCommandBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
+--           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetCommandBuffer"
+               vkResetCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+##else
+vkResetCommandBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkCommandBufferResetFlags -- ^ flags
+                                                                      -> IO VkResult
+vkResetCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandBuffer)
+
+{-# NOINLINE vkResetCommandBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
+--           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
+--
+vkResetCommandBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkCommandBufferResetFlags -- ^ flags
+                                                                  -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetCommandBuffer = vkResetCommandBufferUnsafe
+##else
+vkResetCommandBuffer = vkResetCommandBufferSafe
+
+##endif
+{-# INLINE vkResetCommandBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkCommandBufferResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+type HS_vkResetCommandBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkCommandBufferResetFlags -- ^ flags
+                                                  -> IO VkResult
+
+type PFN_vkResetCommandBuffer = FunPtr HS_vkResetCommandBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkResetCommandBufferUnsafe ::
+               PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkResetCommandBufferSafe
+               :: PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
+
+instance VulkanProc "vkResetCommandBuffer" where
+        type VkProcType "vkResetCommandBuffer" = HS_vkResetCommandBuffer
+        vkProcSymbol = _VkResetCommandBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkResetCommandBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkResetCommandBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindPipeline :: CString
+
+pattern VkCmdBindPipeline <- (is_VkCmdBindPipeline -> True)
+  where VkCmdBindPipeline = _VkCmdBindPipeline
+
+{-# INLINE _VkCmdBindPipeline #-}
+
+_VkCmdBindPipeline :: CString
+_VkCmdBindPipeline = Ptr "vkCmdBindPipeline\NUL"##
+
+{-# INLINE is_VkCmdBindPipeline #-}
+
+is_VkCmdBindPipeline :: CString -> Bool
+is_VkCmdBindPipeline = (EQ ==) . cmpCStrings _VkCmdBindPipeline
+
+type VkCmdBindPipeline = "vkCmdBindPipeline"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
+--           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindPipeline"
+               vkCmdBindPipelineUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                      -> VkPipeline -- ^ pipeline
+                                                                    -> IO ()
+
+##else
+vkCmdBindPipelineUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                               -> VkPipeline -- ^ pipeline
+                                                                             -> IO ()
+vkCmdBindPipelineUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindPipeline)
+
+{-# NOINLINE vkCmdBindPipelineUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
+--           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+
+##else
+vkCmdBindPipelineSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                             -> VkPipeline -- ^ pipeline
+                                                                           -> IO ()
+vkCmdBindPipelineSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindPipeline)
+
+{-# NOINLINE vkCmdBindPipelineSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
+--           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
+--
+vkCmdBindPipeline ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindPipeline = vkCmdBindPipelineUnsafe
+##else
+vkCmdBindPipeline = vkCmdBindPipelineSafe
+
+##endif
+{-# INLINE vkCmdBindPipeline #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindPipeline
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipeline pipeline
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+type HS_vkCmdBindPipeline =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                            -> VkPipeline -- ^ pipeline
+                                                          -> IO ()
+
+type PFN_vkCmdBindPipeline = FunPtr HS_vkCmdBindPipeline
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBindPipelineUnsafe
+               :: PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
+
+foreign import ccall safe "dynamic" unwrapVkCmdBindPipelineSafe ::
+               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
+
+instance VulkanProc "vkCmdBindPipeline" where
+        type VkProcType "vkCmdBindPipeline" = HS_vkCmdBindPipeline
+        vkProcSymbol = _VkCmdBindPipeline
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBindPipelineUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindPipelineSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetViewport :: CString
+
+pattern VkCmdSetViewport <- (is_VkCmdSetViewport -> True)
+  where VkCmdSetViewport = _VkCmdSetViewport
+
+{-# INLINE _VkCmdSetViewport #-}
+
+_VkCmdSetViewport :: CString
+_VkCmdSetViewport = Ptr "vkCmdSetViewport\NUL"##
+
+{-# INLINE is_VkCmdSetViewport #-}
+
+is_VkCmdSetViewport :: CString -> Bool
+is_VkCmdSetViewport = (EQ ==) . cmpCStrings _VkCmdSetViewport
+
+type VkCmdSetViewport = "vkCmdSetViewport"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
+--           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetViewport"
+               vkCmdSetViewportUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstViewport
+                                         -> Word32 -- ^ viewportCount
+                                                   -> Ptr VkViewport -- ^ pViewports
+                                                                     -> IO ()
+
+##else
+vkCmdSetViewportUnsafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> Word32 -- ^ firstViewport
+                                                 -> Word32 -- ^ viewportCount
+                                                           -> Ptr VkViewport -- ^ pViewports
+                                                                             -> IO ()
+vkCmdSetViewportUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetViewport)
+
+{-# NOINLINE vkCmdSetViewportUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
+--           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ firstViewport
+                                            -> Word32 -- ^ viewportCount
+                                                      -> Ptr VkViewport -- ^ pViewports
+                                                                        -> IO ()
+
+##else
+vkCmdSetViewportSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Word32 -- ^ firstViewport
+                                               -> Word32 -- ^ viewportCount
+                                                         -> Ptr VkViewport -- ^ pViewports
+                                                                           -> IO ()
+vkCmdSetViewportSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetViewport)
+
+{-# NOINLINE vkCmdSetViewportSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
+--           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
+--
+vkCmdSetViewport ::
+                 VkCommandBuffer -- ^ commandBuffer
+                                 -> Word32 -- ^ firstViewport
+                                           -> Word32 -- ^ viewportCount
+                                                     -> Ptr VkViewport -- ^ pViewports
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetViewport = vkCmdSetViewportUnsafe
+##else
+vkCmdSetViewport = vkCmdSetViewportSafe
+
+##endif
+{-# INLINE vkCmdSetViewport #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetViewport
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstViewport
+--   >     , uint32_t viewportCount
+--   >     , const VkViewport* pViewports
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+type HS_vkCmdSetViewport =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ firstViewport
+                               -> Word32 -- ^ viewportCount
+                                         -> Ptr VkViewport -- ^ pViewports
+                                                           -> IO ()
+
+type PFN_vkCmdSetViewport = FunPtr HS_vkCmdSetViewport
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetViewportUnsafe
+               :: PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetViewportSafe ::
+               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
+
+instance VulkanProc "vkCmdSetViewport" where
+        type VkProcType "vkCmdSetViewport" = HS_vkCmdSetViewport
+        vkProcSymbol = _VkCmdSetViewport
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetViewportUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetViewportSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetScissor :: CString
+
+pattern VkCmdSetScissor <- (is_VkCmdSetScissor -> True)
+  where VkCmdSetScissor = _VkCmdSetScissor
+
+{-# INLINE _VkCmdSetScissor #-}
+
+_VkCmdSetScissor :: CString
+_VkCmdSetScissor = Ptr "vkCmdSetScissor\NUL"##
+
+{-# INLINE is_VkCmdSetScissor #-}
+
+is_VkCmdSetScissor :: CString -> Bool
+is_VkCmdSetScissor = (EQ ==) . cmpCStrings _VkCmdSetScissor
+
+type VkCmdSetScissor = "vkCmdSetScissor"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
+--           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissorUnsafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ firstScissor
+                                            -> Word32 -- ^ scissorCount
+                                                      -> Ptr VkRect2D -- ^ pScissors
+                                                                      -> IO ()
+
+##else
+vkCmdSetScissorUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> Word32 -- ^ firstScissor
+                                                -> Word32 -- ^ scissorCount
+                                                          -> Ptr VkRect2D -- ^ pScissors
+                                                                          -> IO ()
+vkCmdSetScissorUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetScissor)
+
+{-# NOINLINE vkCmdSetScissorUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
+--           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstScissor
+                                         -> Word32 -- ^ scissorCount
+                                                   -> Ptr VkRect2D -- ^ pScissors
+                                                                   -> IO ()
+
+##else
+vkCmdSetScissorSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> Word32 -- ^ firstScissor
+                                              -> Word32 -- ^ scissorCount
+                                                        -> Ptr VkRect2D -- ^ pScissors
+                                                                        -> IO ()
+vkCmdSetScissorSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetScissor)
+
+{-# NOINLINE vkCmdSetScissorSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
+--           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
+--
+vkCmdSetScissor ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> Word32 -- ^ firstScissor
+                                          -> Word32 -- ^ scissorCount
+                                                    -> Ptr VkRect2D -- ^ pScissors
+                                                                    -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetScissor = vkCmdSetScissorUnsafe
+##else
+vkCmdSetScissor = vkCmdSetScissorSafe
+
+##endif
+{-# INLINE vkCmdSetScissor #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetScissor
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstScissor
+--   >     , uint32_t scissorCount
+--   >     , const VkRect2D* pScissors
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+type HS_vkCmdSetScissor =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ firstScissor
+                               -> Word32 -- ^ scissorCount
+                                         -> Ptr VkRect2D -- ^ pScissors
+                                                         -> IO ()
+
+type PFN_vkCmdSetScissor = FunPtr HS_vkCmdSetScissor
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetScissorUnsafe
+               :: PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetScissorSafe ::
+               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
+
+instance VulkanProc "vkCmdSetScissor" where
+        type VkProcType "vkCmdSetScissor" = HS_vkCmdSetScissor
+        vkProcSymbol = _VkCmdSetScissor
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetScissorUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetScissorSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetLineWidth :: CString
+
+pattern VkCmdSetLineWidth <- (is_VkCmdSetLineWidth -> True)
+  where VkCmdSetLineWidth = _VkCmdSetLineWidth
+
+{-# INLINE _VkCmdSetLineWidth #-}
+
+_VkCmdSetLineWidth :: CString
+_VkCmdSetLineWidth = Ptr "vkCmdSetLineWidth\NUL"##
+
+{-# INLINE is_VkCmdSetLineWidth #-}
+
+is_VkCmdSetLineWidth :: CString -> Bool
+is_VkCmdSetLineWidth = (EQ ==) . cmpCStrings _VkCmdSetLineWidth
+
+type VkCmdSetLineWidth = "vkCmdSetLineWidth"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
+--           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetLineWidth"
+               vkCmdSetLineWidthUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> #{type float} -> IO ()
+
+##else
+vkCmdSetLineWidthUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> #{type float} -> IO ()
+vkCmdSetLineWidthUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetLineWidth)
+
+{-# NOINLINE vkCmdSetLineWidthUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
+--           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+
+##else
+vkCmdSetLineWidthSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> #{type float} -> IO ()
+vkCmdSetLineWidthSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetLineWidth)
+
+{-# NOINLINE vkCmdSetLineWidthSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
+--           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
+--
+vkCmdSetLineWidth ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetLineWidth = vkCmdSetLineWidthUnsafe
+##else
+vkCmdSetLineWidth = vkCmdSetLineWidthSafe
+
+##endif
+{-# INLINE vkCmdSetLineWidth #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetLineWidth
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float lineWidth
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+type HS_vkCmdSetLineWidth =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> #{type float} -> IO ()
+
+type PFN_vkCmdSetLineWidth = FunPtr HS_vkCmdSetLineWidth
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetLineWidthUnsafe
+               :: PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetLineWidthSafe ::
+               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
+
+instance VulkanProc "vkCmdSetLineWidth" where
+        type VkProcType "vkCmdSetLineWidth" = HS_vkCmdSetLineWidth
+        vkProcSymbol = _VkCmdSetLineWidth
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetLineWidthUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetLineWidthSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDepthBias :: CString
+
+pattern VkCmdSetDepthBias <- (is_VkCmdSetDepthBias -> True)
+  where VkCmdSetDepthBias = _VkCmdSetDepthBias
+
+{-# INLINE _VkCmdSetDepthBias #-}
+
+_VkCmdSetDepthBias :: CString
+_VkCmdSetDepthBias = Ptr "vkCmdSetDepthBias\NUL"##
+
+{-# INLINE is_VkCmdSetDepthBias #-}
+
+is_VkCmdSetDepthBias :: CString -> Bool
+is_VkCmdSetDepthBias = (EQ ==) . cmpCStrings _VkCmdSetDepthBias
+
+type VkCmdSetDepthBias = "vkCmdSetDepthBias"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
+--           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetDepthBias"
+               vkCmdSetDepthBiasUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBiasUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          #{type float} ->
+                            #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBiasUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDepthBias)
+
+{-# NOINLINE vkCmdSetDepthBiasUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
+--           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBiasSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        #{type float} ->
+                          #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBiasSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBias)
+
+{-# NOINLINE vkCmdSetDepthBiasSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
+--           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
+--
+vkCmdSetDepthBias ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    #{type float} ->
+                      #{type float} -> #{type float} -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetDepthBias = vkCmdSetDepthBiasUnsafe
+##else
+vkCmdSetDepthBias = vkCmdSetDepthBiasSafe
+
+##endif
+{-# INLINE vkCmdSetDepthBias #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDepthBias
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float depthBiasConstantFactor
+--   >     , float depthBiasClamp
+--   >     , float depthBiasSlopeFactor
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+type HS_vkCmdSetDepthBias =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       #{type float} ->
+         #{type float} -> #{type float} -> IO ()
+
+type PFN_vkCmdSetDepthBias = FunPtr HS_vkCmdSetDepthBias
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBiasUnsafe
+               :: PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBiasSafe ::
+               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
+
+instance VulkanProc "vkCmdSetDepthBias" where
+        type VkProcType "vkCmdSetDepthBias" = HS_vkCmdSetDepthBias
+        vkProcSymbol = _VkCmdSetDepthBias
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDepthBiasUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBiasSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetBlendConstants :: CString
+
+pattern VkCmdSetBlendConstants <-
+        (is_VkCmdSetBlendConstants -> True)
+  where VkCmdSetBlendConstants = _VkCmdSetBlendConstants
+
+{-# INLINE _VkCmdSetBlendConstants #-}
+
+_VkCmdSetBlendConstants :: CString
+_VkCmdSetBlendConstants = Ptr "vkCmdSetBlendConstants\NUL"##
+
+{-# INLINE is_VkCmdSetBlendConstants #-}
+
+is_VkCmdSetBlendConstants :: CString -> Bool
+is_VkCmdSetBlendConstants
+  = (EQ ==) . cmpCStrings _VkCmdSetBlendConstants
+
+type VkCmdSetBlendConstants = "vkCmdSetBlendConstants"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
+--           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstantsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+##else
+vkCmdSetBlendConstantsUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> Ptr #{type float} -- ^ blendConstants
+                                                                              -> IO ()
+vkCmdSetBlendConstantsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetBlendConstants)
+
+{-# NOINLINE vkCmdSetBlendConstantsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
+--           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+##else
+vkCmdSetBlendConstantsSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Ptr #{type float} -- ^ blendConstants
+                                                                            -> IO ()
+vkCmdSetBlendConstantsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetBlendConstants)
+
+{-# NOINLINE vkCmdSetBlendConstantsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
+--           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
+--
+vkCmdSetBlendConstants ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> Ptr #{type float} -- ^ blendConstants
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetBlendConstants = vkCmdSetBlendConstantsUnsafe
+##else
+vkCmdSetBlendConstants = vkCmdSetBlendConstantsSafe
+
+##endif
+{-# INLINE vkCmdSetBlendConstants #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetBlendConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const float blendConstants[4]
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+type HS_vkCmdSetBlendConstants =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Ptr #{type float} -- ^ blendConstants
+                                                      -> IO ()
+
+type PFN_vkCmdSetBlendConstants = FunPtr HS_vkCmdSetBlendConstants
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetBlendConstantsUnsafe ::
+               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetBlendConstantsSafe ::
+               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
+
+instance VulkanProc "vkCmdSetBlendConstants" where
+        type VkProcType "vkCmdSetBlendConstants" =
+             HS_vkCmdSetBlendConstants
+        vkProcSymbol = _VkCmdSetBlendConstants
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetBlendConstantsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetBlendConstantsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDepthBounds :: CString
+
+pattern VkCmdSetDepthBounds <- (is_VkCmdSetDepthBounds -> True)
+  where VkCmdSetDepthBounds = _VkCmdSetDepthBounds
+
+{-# INLINE _VkCmdSetDepthBounds #-}
+
+_VkCmdSetDepthBounds :: CString
+_VkCmdSetDepthBounds = Ptr "vkCmdSetDepthBounds\NUL"##
+
+{-# INLINE is_VkCmdSetDepthBounds #-}
+
+is_VkCmdSetDepthBounds :: CString -> Bool
+is_VkCmdSetDepthBounds = (EQ ==) . cmpCStrings _VkCmdSetDepthBounds
+
+type VkCmdSetDepthBounds = "vkCmdSetDepthBounds"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
+--           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBoundsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBoundsUnsafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBoundsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDepthBounds)
+
+{-# NOINLINE vkCmdSetDepthBoundsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
+--           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBoundsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBoundsSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBoundsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBounds)
+
+{-# NOINLINE vkCmdSetDepthBoundsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
+--           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
+--
+vkCmdSetDepthBounds ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      #{type float} -> #{type float} -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetDepthBounds = vkCmdSetDepthBoundsUnsafe
+##else
+vkCmdSetDepthBounds = vkCmdSetDepthBoundsSafe
+
+##endif
+{-# INLINE vkCmdSetDepthBounds #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDepthBounds
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float minDepthBounds
+--   >     , float maxDepthBounds
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+type HS_vkCmdSetDepthBounds =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       #{type float} -> #{type float} -> IO ()
+
+type PFN_vkCmdSetDepthBounds = FunPtr HS_vkCmdSetDepthBounds
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetDepthBoundsUnsafe ::
+               PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBoundsSafe
+               :: PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
+
+instance VulkanProc "vkCmdSetDepthBounds" where
+        type VkProcType "vkCmdSetDepthBounds" = HS_vkCmdSetDepthBounds
+        vkProcSymbol = _VkCmdSetDepthBounds
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDepthBoundsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBoundsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilCompareMask :: CString
+
+pattern VkCmdSetStencilCompareMask <-
+        (is_VkCmdSetStencilCompareMask -> True)
+  where VkCmdSetStencilCompareMask = _VkCmdSetStencilCompareMask
+
+{-# INLINE _VkCmdSetStencilCompareMask #-}
+
+_VkCmdSetStencilCompareMask :: CString
+_VkCmdSetStencilCompareMask = Ptr "vkCmdSetStencilCompareMask\NUL"##
+
+{-# INLINE is_VkCmdSetStencilCompareMask #-}
+
+is_VkCmdSetStencilCompareMask :: CString -> Bool
+is_VkCmdSetStencilCompareMask
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilCompareMask
+
+type VkCmdSetStencilCompareMask = "vkCmdSetStencilCompareMask"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
+--           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMaskUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilCompareMaskUnsafe ::
+                                 VkCommandBuffer -- ^ commandBuffer
+                                                 -> VkStencilFaceFlags -- ^ faceMask
+                                                                       -> Word32 -- ^ compareMask
+                                                                                 -> IO ()
+vkCmdSetStencilCompareMaskUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdSetStencilCompareMask)
+
+{-# NOINLINE vkCmdSetStencilCompareMaskUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
+--           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilCompareMaskSafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ compareMask
+                                                                               -> IO ()
+vkCmdSetStencilCompareMaskSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCmdSetStencilCompareMask)
+
+{-# NOINLINE vkCmdSetStencilCompareMaskSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
+--           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
+--
+vkCmdSetStencilCompareMask ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkStencilFaceFlags -- ^ faceMask
+                                                                 -> Word32 -- ^ compareMask
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMaskUnsafe
+##else
+vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMaskSafe
+
+##endif
+{-# INLINE vkCmdSetStencilCompareMask #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilCompareMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t compareMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+type HS_vkCmdSetStencilCompareMask =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ compareMask
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilCompareMask =
+     FunPtr HS_vkCmdSetStencilCompareMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilCompareMaskUnsafe ::
+               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilCompareMaskSafe ::
+               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
+
+instance VulkanProc "vkCmdSetStencilCompareMask" where
+        type VkProcType "vkCmdSetStencilCompareMask" =
+             HS_vkCmdSetStencilCompareMask
+        vkProcSymbol = _VkCmdSetStencilCompareMask
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilCompareMaskUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilCompareMaskSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilWriteMask :: CString
+
+pattern VkCmdSetStencilWriteMask <-
+        (is_VkCmdSetStencilWriteMask -> True)
+  where VkCmdSetStencilWriteMask = _VkCmdSetStencilWriteMask
+
+{-# INLINE _VkCmdSetStencilWriteMask #-}
+
+_VkCmdSetStencilWriteMask :: CString
+_VkCmdSetStencilWriteMask = Ptr "vkCmdSetStencilWriteMask\NUL"##
+
+{-# INLINE is_VkCmdSetStencilWriteMask #-}
+
+is_VkCmdSetStencilWriteMask :: CString -> Bool
+is_VkCmdSetStencilWriteMask
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilWriteMask
+
+type VkCmdSetStencilWriteMask = "vkCmdSetStencilWriteMask"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
+--           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMaskUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilWriteMaskUnsafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ writeMask
+                                                                               -> IO ()
+vkCmdSetStencilWriteMaskUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdSetStencilWriteMask)
+
+{-# NOINLINE vkCmdSetStencilWriteMaskUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
+--           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilWriteMaskSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> VkStencilFaceFlags -- ^ faceMask
+                                                                   -> Word32 -- ^ writeMask
+                                                                             -> IO ()
+vkCmdSetStencilWriteMaskSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilWriteMask)
+
+{-# NOINLINE vkCmdSetStencilWriteMaskSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
+--           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
+--
+vkCmdSetStencilWriteMask ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkStencilFaceFlags -- ^ faceMask
+                                                               -> Word32 -- ^ writeMask
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMaskUnsafe
+##else
+vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMaskSafe
+
+##endif
+{-# INLINE vkCmdSetStencilWriteMask #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilWriteMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t writeMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+type HS_vkCmdSetStencilWriteMask =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ writeMask
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilWriteMask =
+     FunPtr HS_vkCmdSetStencilWriteMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilWriteMaskUnsafe ::
+               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilWriteMaskSafe ::
+               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
+
+instance VulkanProc "vkCmdSetStencilWriteMask" where
+        type VkProcType "vkCmdSetStencilWriteMask" =
+             HS_vkCmdSetStencilWriteMask
+        vkProcSymbol = _VkCmdSetStencilWriteMask
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilWriteMaskUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilWriteMaskSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilReference :: CString
+
+pattern VkCmdSetStencilReference <-
+        (is_VkCmdSetStencilReference -> True)
+  where VkCmdSetStencilReference = _VkCmdSetStencilReference
+
+{-# INLINE _VkCmdSetStencilReference #-}
+
+_VkCmdSetStencilReference :: CString
+_VkCmdSetStencilReference = Ptr "vkCmdSetStencilReference\NUL"##
+
+{-# INLINE is_VkCmdSetStencilReference #-}
+
+is_VkCmdSetStencilReference :: CString -> Bool
+is_VkCmdSetStencilReference
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilReference
+
+type VkCmdSetStencilReference = "vkCmdSetStencilReference"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
+--           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilReference"
+               vkCmdSetStencilReferenceUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilReferenceUnsafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ reference
+                                                                               -> IO ()
+vkCmdSetStencilReferenceUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdSetStencilReference)
+
+{-# NOINLINE vkCmdSetStencilReferenceUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
+--           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilReference"
+               vkCmdSetStencilReferenceSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilReferenceSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> VkStencilFaceFlags -- ^ faceMask
+                                                                   -> Word32 -- ^ reference
+                                                                             -> IO ()
+vkCmdSetStencilReferenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilReference)
+
+{-# NOINLINE vkCmdSetStencilReferenceSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
+--           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
+--
+vkCmdSetStencilReference ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkStencilFaceFlags -- ^ faceMask
+                                                               -> Word32 -- ^ reference
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetStencilReference = vkCmdSetStencilReferenceUnsafe
+##else
+vkCmdSetStencilReference = vkCmdSetStencilReferenceSafe
+
+##endif
+{-# INLINE vkCmdSetStencilReference #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilReference
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t reference
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+type HS_vkCmdSetStencilReference =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ reference
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilReference =
+     FunPtr HS_vkCmdSetStencilReference
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilReferenceUnsafe ::
+               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilReferenceSafe ::
+               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
+
+instance VulkanProc "vkCmdSetStencilReference" where
+        type VkProcType "vkCmdSetStencilReference" =
+             HS_vkCmdSetStencilReference
+        vkProcSymbol = _VkCmdSetStencilReference
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilReferenceUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilReferenceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindDescriptorSets :: CString
+
+pattern VkCmdBindDescriptorSets <-
+        (is_VkCmdBindDescriptorSets -> True)
+  where VkCmdBindDescriptorSets = _VkCmdBindDescriptorSets
+
+{-# INLINE _VkCmdBindDescriptorSets #-}
+
+_VkCmdBindDescriptorSets :: CString
+_VkCmdBindDescriptorSets = Ptr "vkCmdBindDescriptorSets\NUL"##
+
+{-# INLINE is_VkCmdBindDescriptorSets #-}
+
+is_VkCmdBindDescriptorSets :: CString -> Bool
+is_VkCmdBindDescriptorSets
+  = (EQ ==) . cmpCStrings _VkCmdBindDescriptorSets
+
+type VkCmdBindDescriptorSets = "vkCmdBindDescriptorSets"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
+--           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSetsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+##else
+vkCmdBindDescriptorSetsUnsafe ::
+                              VkCommandBuffer -- ^ commandBuffer
+                                              ->
+                                VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                    ->
+                                  VkPipelineLayout -- ^ layout
+                                                   ->
+                                    Word32 -- ^ firstSet
+                                           ->
+                                      Word32 -- ^ descriptorSetCount
+                                             -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                    -> Word32 -- ^ dynamicOffsetCount
+                                                                              -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                            -> IO ()
+vkCmdBindDescriptorSetsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindDescriptorSets)
+
+{-# NOINLINE vkCmdBindDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
+--           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSetsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+##else
+vkCmdBindDescriptorSetsSafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                  ->
+                                VkPipelineLayout -- ^ layout
+                                                 ->
+                                  Word32 -- ^ firstSet
+                                         ->
+                                    Word32 -- ^ descriptorSetCount
+                                           -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                  -> Word32 -- ^ dynamicOffsetCount
+                                                                            -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                          -> IO ()
+vkCmdBindDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindDescriptorSets)
+
+{-# NOINLINE vkCmdBindDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
+--           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
+--
+vkCmdBindDescriptorSets ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkPipelineBindPoint -- ^ pipelineBindPoint
+                                              ->
+                            VkPipelineLayout -- ^ layout
+                                             ->
+                              Word32 -- ^ firstSet
+                                     ->
+                                Word32 -- ^ descriptorSetCount
+                                       -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                              -> Word32 -- ^ dynamicOffsetCount
+                                                                        -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindDescriptorSets = vkCmdBindDescriptorSetsUnsafe
+##else
+vkCmdBindDescriptorSets = vkCmdBindDescriptorSetsSafe
+
+##endif
+{-# INLINE vkCmdBindDescriptorSets #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindDescriptorSets
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipelineLayout layout
+--   >     , uint32_t firstSet
+--   >     , uint32_t descriptorSetCount
+--   >     , const VkDescriptorSet* pDescriptorSets
+--   >     , uint32_t dynamicOffsetCount
+--   >     , const uint32_t* pDynamicOffsets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+type HS_vkCmdBindDescriptorSets =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineBindPoint -- ^ pipelineBindPoint
+                           ->
+         VkPipelineLayout -- ^ layout
+                          ->
+           Word32 -- ^ firstSet
+                  ->
+             Word32 -- ^ descriptorSetCount
+                    -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                           -> Word32 -- ^ dynamicOffsetCount
+                                                     -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                   -> IO ()
+
+type PFN_vkCmdBindDescriptorSets =
+     FunPtr HS_vkCmdBindDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBindDescriptorSetsUnsafe ::
+               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBindDescriptorSetsSafe ::
+               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
+
+instance VulkanProc "vkCmdBindDescriptorSets" where
+        type VkProcType "vkCmdBindDescriptorSets" =
+             HS_vkCmdBindDescriptorSets
+        vkProcSymbol = _VkCmdBindDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBindDescriptorSetsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindIndexBuffer :: CString
+
+pattern VkCmdBindIndexBuffer <- (is_VkCmdBindIndexBuffer -> True)
+  where VkCmdBindIndexBuffer = _VkCmdBindIndexBuffer
+
+{-# INLINE _VkCmdBindIndexBuffer #-}
+
+_VkCmdBindIndexBuffer :: CString
+_VkCmdBindIndexBuffer = Ptr "vkCmdBindIndexBuffer\NUL"##
+
+{-# INLINE is_VkCmdBindIndexBuffer #-}
+
+is_VkCmdBindIndexBuffer :: CString -> Bool
+is_VkCmdBindIndexBuffer
+  = (EQ ==) . cmpCStrings _VkCmdBindIndexBuffer
+
+type VkCmdBindIndexBuffer = "vkCmdBindIndexBuffer"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
+--           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+##else
+vkCmdBindIndexBufferUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkBuffer -- ^ buffer
+                                                       -> VkDeviceSize -- ^ offset
+                                                                       -> VkIndexType -- ^ indexType
+                                                                                      -> IO ()
+vkCmdBindIndexBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindIndexBuffer)
+
+{-# NOINLINE vkCmdBindIndexBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
+--           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+##else
+vkCmdBindIndexBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkBuffer -- ^ buffer
+                                                     -> VkDeviceSize -- ^ offset
+                                                                     -> VkIndexType -- ^ indexType
+                                                                                    -> IO ()
+vkCmdBindIndexBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindIndexBuffer)
+
+{-# NOINLINE vkCmdBindIndexBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
+--           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
+--
+vkCmdBindIndexBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkBuffer -- ^ buffer
+                                                 -> VkDeviceSize -- ^ offset
+                                                                 -> VkIndexType -- ^ indexType
+                                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindIndexBuffer = vkCmdBindIndexBufferUnsafe
+##else
+vkCmdBindIndexBuffer = vkCmdBindIndexBufferSafe
+
+##endif
+{-# INLINE vkCmdBindIndexBuffer #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindIndexBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkIndexType indexType
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+type HS_vkCmdBindIndexBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> VkIndexType -- ^ indexType
+                                                                -> IO ()
+
+type PFN_vkCmdBindIndexBuffer = FunPtr HS_vkCmdBindIndexBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBindIndexBufferUnsafe ::
+               PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdBindIndexBufferSafe
+               :: PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
+
+instance VulkanProc "vkCmdBindIndexBuffer" where
+        type VkProcType "vkCmdBindIndexBuffer" = HS_vkCmdBindIndexBuffer
+        vkProcSymbol = _VkCmdBindIndexBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBindIndexBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindIndexBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindVertexBuffers :: CString
+
+pattern VkCmdBindVertexBuffers <-
+        (is_VkCmdBindVertexBuffers -> True)
+  where VkCmdBindVertexBuffers = _VkCmdBindVertexBuffers
+
+{-# INLINE _VkCmdBindVertexBuffers #-}
+
+_VkCmdBindVertexBuffers :: CString
+_VkCmdBindVertexBuffers = Ptr "vkCmdBindVertexBuffers\NUL"##
+
+{-# INLINE is_VkCmdBindVertexBuffers #-}
+
+is_VkCmdBindVertexBuffers :: CString -> Bool
+is_VkCmdBindVertexBuffers
+  = (EQ ==) . cmpCStrings _VkCmdBindVertexBuffers
+
+type VkCmdBindVertexBuffers = "vkCmdBindVertexBuffers"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
+--           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffersUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+##else
+vkCmdBindVertexBuffersUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               Word32 -- ^ firstBinding
+                                      -> Word32 -- ^ bindingCount
+                                                -> Ptr VkBuffer -- ^ pBuffers
+                                                                -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                                    -> IO ()
+vkCmdBindVertexBuffersUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindVertexBuffers)
+
+{-# NOINLINE vkCmdBindVertexBuffersUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
+--           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffersSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+##else
+vkCmdBindVertexBuffersSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             Word32 -- ^ firstBinding
+                                    -> Word32 -- ^ bindingCount
+                                              -> Ptr VkBuffer -- ^ pBuffers
+                                                              -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                                  -> IO ()
+vkCmdBindVertexBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindVertexBuffers)
+
+{-# NOINLINE vkCmdBindVertexBuffersSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
+--           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
+--
+vkCmdBindVertexBuffers ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         Word32 -- ^ firstBinding
+                                -> Word32 -- ^ bindingCount
+                                          -> Ptr VkBuffer -- ^ pBuffers
+                                                          -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindVertexBuffers = vkCmdBindVertexBuffersUnsafe
+##else
+vkCmdBindVertexBuffers = vkCmdBindVertexBuffersSafe
+
+##endif
+{-# INLINE vkCmdBindVertexBuffers #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindVertexBuffers
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstBinding
+--   >     , uint32_t bindingCount
+--   >     , const VkBuffer* pBuffers
+--   >     , const VkDeviceSize* pOffsets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+type HS_vkCmdBindVertexBuffers =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ firstBinding
+              -> Word32 -- ^ bindingCount
+                        -> Ptr VkBuffer -- ^ pBuffers
+                                        -> Ptr VkDeviceSize -- ^ pOffsets
+                                                            -> IO ()
+
+type PFN_vkCmdBindVertexBuffers = FunPtr HS_vkCmdBindVertexBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBindVertexBuffersUnsafe ::
+               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBindVertexBuffersSafe ::
+               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
+
+instance VulkanProc "vkCmdBindVertexBuffers" where
+        type VkProcType "vkCmdBindVertexBuffers" =
+             HS_vkCmdBindVertexBuffers
+        vkProcSymbol = _VkCmdBindVertexBuffers
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBindVertexBuffersUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindVertexBuffersSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDraw :: CString
+
+pattern VkCmdDraw <- (is_VkCmdDraw -> True)
+  where VkCmdDraw = _VkCmdDraw
+
+{-# INLINE _VkCmdDraw #-}
+
+_VkCmdDraw :: CString
+_VkCmdDraw = Ptr "vkCmdDraw\NUL"##
+
+{-# INLINE is_VkCmdDraw #-}
+
+is_VkCmdDraw :: CString -> Bool
+is_VkCmdDraw = (EQ ==) . cmpCStrings _VkCmdDraw
+
+type VkCmdDraw = "vkCmdDraw"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
+--           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDraw" vkCmdDrawUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+##else
+vkCmdDrawUnsafe ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> Word32 -- ^ vertexCount
+                                          -> Word32 -- ^ instanceCount
+                                                    -> Word32 -- ^ firstVertex
+                                                              -> Word32 -- ^ firstInstance
+                                                                        -> IO ()
+vkCmdDrawUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDraw)
+
+{-# NOINLINE vkCmdDrawUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
+--           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+##else
+vkCmdDrawSafe ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> Word32 -- ^ vertexCount
+                                        -> Word32 -- ^ instanceCount
+                                                  -> Word32 -- ^ firstVertex
+                                                            -> Word32 -- ^ firstInstance
+                                                                      -> IO ()
+vkCmdDrawSafe = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDraw)
+
+{-# NOINLINE vkCmdDrawSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
+--           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
+--
+vkCmdDraw ::
+          VkCommandBuffer -- ^ commandBuffer
+                          -> Word32 -- ^ vertexCount
+                                    -> Word32 -- ^ instanceCount
+                                              -> Word32 -- ^ firstVertex
+                                                        -> Word32 -- ^ firstInstance
+                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDraw = vkCmdDrawUnsafe
+##else
+vkCmdDraw = vkCmdDrawSafe
+
+##endif
+{-# INLINE vkCmdDraw #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDraw
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t vertexCount
+--   >     , uint32_t instanceCount
+--   >     , uint32_t firstVertex
+--   >     , uint32_t firstInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+type HS_vkCmdDraw =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ vertexCount
+                               -> Word32 -- ^ instanceCount
+                                         -> Word32 -- ^ firstVertex
+                                                   -> Word32 -- ^ firstInstance
+                                                             -> IO ()
+
+type PFN_vkCmdDraw = FunPtr HS_vkCmdDraw
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawUnsafe ::
+               PFN_vkCmdDraw -> HS_vkCmdDraw
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawSafe ::
+               PFN_vkCmdDraw -> HS_vkCmdDraw
+
+instance VulkanProc "vkCmdDraw" where
+        type VkProcType "vkCmdDraw" = HS_vkCmdDraw
+        vkProcSymbol = _VkCmdDraw
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexed :: CString
+
+pattern VkCmdDrawIndexed <- (is_VkCmdDrawIndexed -> True)
+  where VkCmdDrawIndexed = _VkCmdDrawIndexed
+
+{-# INLINE _VkCmdDrawIndexed #-}
+
+_VkCmdDrawIndexed :: CString
+_VkCmdDrawIndexed = Ptr "vkCmdDrawIndexed\NUL"##
+
+{-# INLINE is_VkCmdDrawIndexed #-}
+
+is_VkCmdDrawIndexed :: CString -> Bool
+is_VkCmdDrawIndexed = (EQ ==) . cmpCStrings _VkCmdDrawIndexed
+
+type VkCmdDrawIndexed = "vkCmdDrawIndexed"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
+--           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndexed"
+               vkCmdDrawIndexedUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+##else
+vkCmdDrawIndexedUnsafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         Word32 -- ^ indexCount
+                                -> Word32 -- ^ instanceCount
+                                          -> Word32 -- ^ firstIndex
+                                                    -> Int32 -- ^ vertexOffset
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+vkCmdDrawIndexedUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDrawIndexed)
+
+{-# NOINLINE vkCmdDrawIndexedUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
+--           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+##else
+vkCmdDrawIndexedSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       Word32 -- ^ indexCount
+                              -> Word32 -- ^ instanceCount
+                                        -> Word32 -- ^ firstIndex
+                                                  -> Int32 -- ^ vertexOffset
+                                                           -> Word32 -- ^ firstInstance
+                                                                     -> IO ()
+vkCmdDrawIndexedSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexed)
+
+{-# NOINLINE vkCmdDrawIndexedSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
+--           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
+--
+vkCmdDrawIndexed ::
+                 VkCommandBuffer -- ^ commandBuffer
+                                 ->
+                   Word32 -- ^ indexCount
+                          -> Word32 -- ^ instanceCount
+                                    -> Word32 -- ^ firstIndex
+                                              -> Int32 -- ^ vertexOffset
+                                                       -> Word32 -- ^ firstInstance
+                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDrawIndexed = vkCmdDrawIndexedUnsafe
+##else
+vkCmdDrawIndexed = vkCmdDrawIndexedSafe
+
+##endif
+{-# INLINE vkCmdDrawIndexed #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexed
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t indexCount
+--   >     , uint32_t instanceCount
+--   >     , uint32_t firstIndex
+--   >     , int32_t vertexOffset
+--   >     , uint32_t firstInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+type HS_vkCmdDrawIndexed =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ indexCount
+              -> Word32 -- ^ instanceCount
+                        -> Word32 -- ^ firstIndex
+                                  -> Int32 -- ^ vertexOffset
+                                           -> Word32 -- ^ firstInstance
+                                                     -> IO ()
+
+type PFN_vkCmdDrawIndexed = FunPtr HS_vkCmdDrawIndexed
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndexedUnsafe
+               :: PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawIndexedSafe ::
+               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
+
+instance VulkanProc "vkCmdDrawIndexed" where
+        type VkProcType "vkCmdDrawIndexed" = HS_vkCmdDrawIndexed
+        vkProcSymbol = _VkCmdDrawIndexed
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndexedUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndirect :: CString
+
+pattern VkCmdDrawIndirect <- (is_VkCmdDrawIndirect -> True)
+  where VkCmdDrawIndirect = _VkCmdDrawIndirect
+
+{-# INLINE _VkCmdDrawIndirect #-}
+
+_VkCmdDrawIndirect :: CString
+_VkCmdDrawIndirect = Ptr "vkCmdDrawIndirect\NUL"##
+
+{-# INLINE is_VkCmdDrawIndirect #-}
+
+is_VkCmdDrawIndirect :: CString -> Bool
+is_VkCmdDrawIndirect = (EQ ==) . cmpCStrings _VkCmdDrawIndirect
+
+type VkCmdDrawIndirect = "vkCmdDrawIndirect"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
+--           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndirect"
+               vkCmdDrawIndirectUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndirectUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkBuffer -- ^ buffer
+                                   -> VkDeviceSize -- ^ offset
+                                                   -> Word32 -- ^ drawCount
+                                                             -> Word32 -- ^ stride
+                                                                       -> IO ()
+vkCmdDrawIndirectUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDrawIndirect)
+
+{-# NOINLINE vkCmdDrawIndirectUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
+--           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndirectSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> Word32 -- ^ drawCount
+                                                           -> Word32 -- ^ stride
+                                                                     -> IO ()
+vkCmdDrawIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndirect)
+
+{-# NOINLINE vkCmdDrawIndirectSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
+--           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
+--
+vkCmdDrawIndirect ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkBuffer -- ^ buffer
+                             -> VkDeviceSize -- ^ offset
+                                             -> Word32 -- ^ drawCount
+                                                       -> Word32 -- ^ stride
+                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDrawIndirect = vkCmdDrawIndirectUnsafe
+##else
+vkCmdDrawIndirect = vkCmdDrawIndirectSafe
+
+##endif
+{-# INLINE vkCmdDrawIndirect #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+type HS_vkCmdDrawIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceSize -- ^ offset
+                                -> Word32 -- ^ drawCount
+                                          -> Word32 -- ^ stride
+                                                    -> IO ()
+
+type PFN_vkCmdDrawIndirect = FunPtr HS_vkCmdDrawIndirect
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndirectUnsafe
+               :: PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawIndirectSafe ::
+               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
+
+instance VulkanProc "vkCmdDrawIndirect" where
+        type VkProcType "vkCmdDrawIndirect" = HS_vkCmdDrawIndirect
+        vkProcSymbol = _VkCmdDrawIndirect
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexedIndirect :: CString
+
+pattern VkCmdDrawIndexedIndirect <-
+        (is_VkCmdDrawIndexedIndirect -> True)
+  where VkCmdDrawIndexedIndirect = _VkCmdDrawIndexedIndirect
+
+{-# INLINE _VkCmdDrawIndexedIndirect #-}
+
+_VkCmdDrawIndexedIndirect :: CString
+_VkCmdDrawIndexedIndirect = Ptr "vkCmdDrawIndexedIndirect\NUL"##
+
+{-# INLINE is_VkCmdDrawIndexedIndirect #-}
+
+is_VkCmdDrawIndexedIndirect :: CString -> Bool
+is_VkCmdDrawIndexedIndirect
+  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirect
+
+type VkCmdDrawIndexedIndirect = "vkCmdDrawIndexedIndirect"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
+--           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirectUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndexedIndirectUnsafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               ->
+                                 VkBuffer -- ^ buffer
+                                          -> VkDeviceSize -- ^ offset
+                                                          -> Word32 -- ^ drawCount
+                                                                    -> Word32 -- ^ stride
+                                                                              -> IO ()
+vkCmdDrawIndexedIndirectUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdDrawIndexedIndirect)
+
+{-# NOINLINE vkCmdDrawIndexedIndirectUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
+--           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndexedIndirectSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkBuffer -- ^ buffer
+                                        -> VkDeviceSize -- ^ offset
+                                                        -> Word32 -- ^ drawCount
+                                                                  -> Word32 -- ^ stride
+                                                                            -> IO ()
+vkCmdDrawIndexedIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexedIndirect)
+
+{-# NOINLINE vkCmdDrawIndexedIndirectSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
+--           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
+--
+vkCmdDrawIndexedIndirect ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkBuffer -- ^ buffer
+                                    -> VkDeviceSize -- ^ offset
+                                                    -> Word32 -- ^ drawCount
+                                                              -> Word32 -- ^ stride
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirectUnsafe
+##else
+vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirectSafe
+
+##endif
+{-# INLINE vkCmdDrawIndexedIndirect #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexedIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+type HS_vkCmdDrawIndexedIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceSize -- ^ offset
+                                -> Word32 -- ^ drawCount
+                                          -> Word32 -- ^ stride
+                                                    -> IO ()
+
+type PFN_vkCmdDrawIndexedIndirect =
+     FunPtr HS_vkCmdDrawIndexedIndirect
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectUnsafe ::
+               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectSafe ::
+               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
+
+instance VulkanProc "vkCmdDrawIndexedIndirect" where
+        type VkProcType "vkCmdDrawIndexedIndirect" =
+             HS_vkCmdDrawIndexedIndirect
+        vkProcSymbol = _VkCmdDrawIndexedIndirect
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndexedIndirectUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatch :: CString
+
+pattern VkCmdDispatch <- (is_VkCmdDispatch -> True)
+  where VkCmdDispatch = _VkCmdDispatch
+
+{-# INLINE _VkCmdDispatch #-}
+
+_VkCmdDispatch :: CString
+_VkCmdDispatch = Ptr "vkCmdDispatch\NUL"##
+
+{-# INLINE is_VkCmdDispatch #-}
+
+is_VkCmdDispatch :: CString -> Bool
+is_VkCmdDispatch = (EQ ==) . cmpCStrings _VkCmdDispatch
+
+type VkCmdDispatch = "vkCmdDispatch"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
+--           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatchUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+##else
+vkCmdDispatchUnsafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> Word32 -- ^ groupCountX
+                                              -> Word32 -- ^ groupCountY
+                                                        -> Word32 -- ^ groupCountZ
+                                                                  -> IO ()
+vkCmdDispatchUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatch)
+
+{-# NOINLINE vkCmdDispatchUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
+--           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+##else
+vkCmdDispatchSafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ groupCountX
+                                            -> Word32 -- ^ groupCountY
+                                                      -> Word32 -- ^ groupCountZ
+                                                                -> IO ()
+vkCmdDispatchSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatch)
+
+{-# NOINLINE vkCmdDispatchSafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
+--           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
+--
+vkCmdDispatch ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> Word32 -- ^ groupCountX
+                                        -> Word32 -- ^ groupCountY
+                                                  -> Word32 -- ^ groupCountZ
+                                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDispatch = vkCmdDispatchUnsafe
+##else
+vkCmdDispatch = vkCmdDispatchSafe
+
+##endif
+{-# INLINE vkCmdDispatch #-}
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @compute@
+--
+--   > void vkCmdDispatch
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+type HS_vkCmdDispatch =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ groupCountX
+                               -> Word32 -- ^ groupCountY
+                                         -> Word32 -- ^ groupCountZ
+                                                   -> IO ()
+
+type PFN_vkCmdDispatch = FunPtr HS_vkCmdDispatch
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchUnsafe ::
+               PFN_vkCmdDispatch -> HS_vkCmdDispatch
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchSafe ::
+               PFN_vkCmdDispatch -> HS_vkCmdDispatch
+
+instance VulkanProc "vkCmdDispatch" where
+        type VkProcType "vkCmdDispatch" = HS_vkCmdDispatch
+        vkProcSymbol = _VkCmdDispatch
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatchIndirect :: CString
+
+pattern VkCmdDispatchIndirect <- (is_VkCmdDispatchIndirect -> True)
+  where VkCmdDispatchIndirect = _VkCmdDispatchIndirect
+
+{-# INLINE _VkCmdDispatchIndirect #-}
+
+_VkCmdDispatchIndirect :: CString
+_VkCmdDispatchIndirect = Ptr "vkCmdDispatchIndirect\NUL"##
+
+{-# INLINE is_VkCmdDispatchIndirect #-}
+
+is_VkCmdDispatchIndirect :: CString -> Bool
+is_VkCmdDispatchIndirect
+  = (EQ ==) . cmpCStrings _VkCmdDispatchIndirect
+
+type VkCmdDispatchIndirect = "vkCmdDispatchIndirect"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
+--           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirectUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+##else
+vkCmdDispatchIndirectUnsafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            -> VkBuffer -- ^ buffer
+                                                        -> VkDeviceSize -- ^ offset
+                                                                        -> IO ()
+vkCmdDispatchIndirectUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatchIndirect)
+
+{-# NOINLINE vkCmdDispatchIndirectUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
+--           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+##else
+vkCmdDispatchIndirectSafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          -> VkBuffer -- ^ buffer
+                                                      -> VkDeviceSize -- ^ offset
+                                                                      -> IO ()
+vkCmdDispatchIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchIndirect)
+
+{-# NOINLINE vkCmdDispatchIndirectSafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
+--           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
+--
+vkCmdDispatchIndirect ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkBuffer -- ^ buffer
+                                                  -> VkDeviceSize -- ^ offset
+                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDispatchIndirect = vkCmdDispatchIndirectUnsafe
+##else
+vkCmdDispatchIndirect = vkCmdDispatchIndirectSafe
+
+##endif
+{-# INLINE vkCmdDispatchIndirect #-}
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @compute@
+--
+--   > void vkCmdDispatchIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+type HS_vkCmdDispatchIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> IO ()
+
+type PFN_vkCmdDispatchIndirect = FunPtr HS_vkCmdDispatchIndirect
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDispatchIndirectUnsafe ::
+               PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchIndirectSafe
+               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
+
+instance VulkanProc "vkCmdDispatchIndirect" where
+        type VkProcType "vkCmdDispatchIndirect" = HS_vkCmdDispatchIndirect
+        vkProcSymbol = _VkCmdDispatchIndirect
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchIndirectUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchIndirectSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyBuffer :: CString
+
+pattern VkCmdCopyBuffer <- (is_VkCmdCopyBuffer -> True)
+  where VkCmdCopyBuffer = _VkCmdCopyBuffer
+
+{-# INLINE _VkCmdCopyBuffer #-}
+
+_VkCmdCopyBuffer :: CString
+_VkCmdCopyBuffer = Ptr "vkCmdCopyBuffer\NUL"##
+
+{-# INLINE is_VkCmdCopyBuffer #-}
+
+is_VkCmdCopyBuffer :: CString -> Bool
+is_VkCmdCopyBuffer = (EQ ==) . cmpCStrings _VkCmdCopyBuffer
+
+type VkCmdCopyBuffer = "vkCmdCopyBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
+--           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBufferUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+##else
+vkCmdCopyBufferUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ srcBuffer
+                                 -> VkBuffer -- ^ dstBuffer
+                                             -> Word32 -- ^ regionCount
+                                                       -> Ptr VkBufferCopy -- ^ pRegions
+                                                                           -> IO ()
+vkCmdCopyBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyBuffer)
+
+{-# NOINLINE vkCmdCopyBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
+--           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+##else
+vkCmdCopyBufferSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkBuffer -- ^ srcBuffer
+                               -> VkBuffer -- ^ dstBuffer
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkBufferCopy -- ^ pRegions
+                                                                         -> IO ()
+vkCmdCopyBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBuffer)
+
+{-# NOINLINE vkCmdCopyBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
+--           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
+--
+vkCmdCopyBuffer ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkBuffer -- ^ srcBuffer
+                           -> VkBuffer -- ^ dstBuffer
+                                       -> Word32 -- ^ regionCount
+                                                 -> Ptr VkBufferCopy -- ^ pRegions
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyBuffer = vkCmdCopyBufferUnsafe
+##else
+vkCmdCopyBuffer = vkCmdCopyBufferSafe
+
+##endif
+{-# INLINE vkCmdCopyBuffer #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+type HS_vkCmdCopyBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ srcBuffer
+                -> VkBuffer -- ^ dstBuffer
+                            -> Word32 -- ^ regionCount
+                                      -> Ptr VkBufferCopy -- ^ pRegions
+                                                          -> IO ()
+
+type PFN_vkCmdCopyBuffer = FunPtr HS_vkCmdCopyBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBufferUnsafe
+               :: PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdCopyBufferSafe ::
+               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
+
+instance VulkanProc "vkCmdCopyBuffer" where
+        type VkProcType "vkCmdCopyBuffer" = HS_vkCmdCopyBuffer
+        vkProcSymbol = _VkCmdCopyBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyImage :: CString
+
+pattern VkCmdCopyImage <- (is_VkCmdCopyImage -> True)
+  where VkCmdCopyImage = _VkCmdCopyImage
+
+{-# INLINE _VkCmdCopyImage #-}
+
+_VkCmdCopyImage :: CString
+_VkCmdCopyImage = Ptr "vkCmdCopyImage\NUL"##
+
+{-# INLINE is_VkCmdCopyImage #-}
+
+is_VkCmdCopyImage :: CString -> Bool
+is_VkCmdCopyImage = (EQ ==) . cmpCStrings _VkCmdCopyImage
+
+type VkCmdCopyImage = "vkCmdCopyImage"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
+--           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImageUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+##else
+vkCmdCopyImageUnsafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ srcImage
+                               ->
+                         VkImageLayout -- ^ srcImageLayout
+                                       ->
+                           VkImage -- ^ dstImage
+                                   -> VkImageLayout -- ^ dstImageLayout
+                                                    -> Word32 -- ^ regionCount
+                                                              -> Ptr VkImageCopy -- ^ pRegions
+                                                                                 -> IO ()
+vkCmdCopyImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyImage)
+
+{-# NOINLINE vkCmdCopyImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
+--           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+##else
+vkCmdCopyImageSafe ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkImage -- ^ srcImage
+                             ->
+                       VkImageLayout -- ^ srcImageLayout
+                                     ->
+                         VkImage -- ^ dstImage
+                                 -> VkImageLayout -- ^ dstImageLayout
+                                                  -> Word32 -- ^ regionCount
+                                                            -> Ptr VkImageCopy -- ^ pRegions
+                                                                               -> IO ()
+vkCmdCopyImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImage)
+
+{-# NOINLINE vkCmdCopyImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
+--           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
+--
+vkCmdCopyImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyImage = vkCmdCopyImageUnsafe
+##else
+vkCmdCopyImage = vkCmdCopyImageSafe
+
+##endif
+{-# INLINE vkCmdCopyImage #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+type HS_vkCmdCopyImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   -> VkImageLayout -- ^ dstImageLayout
+                                    -> Word32 -- ^ regionCount
+                                              -> Ptr VkImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+type PFN_vkCmdCopyImage = FunPtr HS_vkCmdCopyImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImageUnsafe ::
+               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdCopyImageSafe ::
+               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
+
+instance VulkanProc "vkCmdCopyImage" where
+        type VkProcType "vkCmdCopyImage" = HS_vkCmdCopyImage
+        vkProcSymbol = _VkCmdCopyImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBlitImage :: CString
+
+pattern VkCmdBlitImage <- (is_VkCmdBlitImage -> True)
+  where VkCmdBlitImage = _VkCmdBlitImage
+
+{-# INLINE _VkCmdBlitImage #-}
+
+_VkCmdBlitImage :: CString
+_VkCmdBlitImage = Ptr "vkCmdBlitImage\NUL"##
+
+{-# INLINE is_VkCmdBlitImage #-}
+
+is_VkCmdBlitImage :: CString -> Bool
+is_VkCmdBlitImage = (EQ ==) . cmpCStrings _VkCmdBlitImage
+
+type VkCmdBlitImage = "vkCmdBlitImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
+--           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImageUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+##else
+vkCmdBlitImageUnsafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ srcImage
+                               ->
+                         VkImageLayout -- ^ srcImageLayout
+                                       ->
+                           VkImage -- ^ dstImage
+                                   ->
+                             VkImageLayout -- ^ dstImageLayout
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkImageBlit -- ^ pRegions
+                                                                        -> VkFilter -- ^ filter
+                                                                                    -> IO ()
+vkCmdBlitImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBlitImage)
+
+{-# NOINLINE vkCmdBlitImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
+--           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+##else
+vkCmdBlitImageSafe ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkImage -- ^ srcImage
+                             ->
+                       VkImageLayout -- ^ srcImageLayout
+                                     ->
+                         VkImage -- ^ dstImage
+                                 ->
+                           VkImageLayout -- ^ dstImageLayout
+                                         -> Word32 -- ^ regionCount
+                                                   -> Ptr VkImageBlit -- ^ pRegions
+                                                                      -> VkFilter -- ^ filter
+                                                                                  -> IO ()
+vkCmdBlitImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBlitImage)
+
+{-# NOINLINE vkCmdBlitImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
+--           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
+--
+vkCmdBlitImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBlitImage = vkCmdBlitImageUnsafe
+##else
+vkCmdBlitImage = vkCmdBlitImageSafe
+
+##endif
+{-# INLINE vkCmdBlitImage #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdBlitImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageBlit* pRegions
+--   >     , VkFilter filter
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+type HS_vkCmdBlitImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   ->
+             VkImageLayout -- ^ dstImageLayout
+                           -> Word32 -- ^ regionCount
+                                     -> Ptr VkImageBlit -- ^ pRegions
+                                                        -> VkFilter -- ^ filter
+                                                                    -> IO ()
+
+type PFN_vkCmdBlitImage = FunPtr HS_vkCmdBlitImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBlitImageUnsafe ::
+               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdBlitImageSafe ::
+               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
+
+instance VulkanProc "vkCmdBlitImage" where
+        type VkProcType "vkCmdBlitImage" = HS_vkCmdBlitImage
+        vkProcSymbol = _VkCmdBlitImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBlitImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBlitImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyBufferToImage :: CString
+
+pattern VkCmdCopyBufferToImage <-
+        (is_VkCmdCopyBufferToImage -> True)
+  where VkCmdCopyBufferToImage = _VkCmdCopyBufferToImage
+
+{-# INLINE _VkCmdCopyBufferToImage #-}
+
+_VkCmdCopyBufferToImage :: CString
+_VkCmdCopyBufferToImage = Ptr "vkCmdCopyBufferToImage\NUL"##
+
+{-# INLINE is_VkCmdCopyBufferToImage #-}
+
+is_VkCmdCopyBufferToImage :: CString -> Bool
+is_VkCmdCopyBufferToImage
+  = (EQ ==) . cmpCStrings _VkCmdCopyBufferToImage
+
+type VkCmdCopyBufferToImage = "vkCmdCopyBufferToImage"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
+--           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+##else
+vkCmdCopyBufferToImageUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkBuffer -- ^ srcBuffer
+                                        ->
+                                 VkImage -- ^ dstImage
+                                         ->
+                                   VkImageLayout -- ^ dstImageLayout
+                                                 -> Word32 -- ^ regionCount
+                                                           -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                                    -> IO ()
+vkCmdCopyBufferToImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyBufferToImage)
+
+{-# NOINLINE vkCmdCopyBufferToImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
+--           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+##else
+vkCmdCopyBufferToImageSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkBuffer -- ^ srcBuffer
+                                      ->
+                               VkImage -- ^ dstImage
+                                       ->
+                                 VkImageLayout -- ^ dstImageLayout
+                                               -> Word32 -- ^ regionCount
+                                                         -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                                  -> IO ()
+vkCmdCopyBufferToImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBufferToImage)
+
+{-# NOINLINE vkCmdCopyBufferToImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
+--           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
+--
+vkCmdCopyBufferToImage ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkBuffer -- ^ srcBuffer
+                                  ->
+                           VkImage -- ^ dstImage
+                                   ->
+                             VkImageLayout -- ^ dstImageLayout
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyBufferToImage = vkCmdCopyBufferToImageUnsafe
+##else
+vkCmdCopyBufferToImage = vkCmdCopyBufferToImageSafe
+
+##endif
+{-# INLINE vkCmdCopyBufferToImage #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyBufferToImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkBufferImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+type HS_vkCmdCopyBufferToImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ srcBuffer
+                ->
+         VkImage -- ^ dstImage
+                 ->
+           VkImageLayout -- ^ dstImageLayout
+                         -> Word32 -- ^ regionCount
+                                   -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                            -> IO ()
+
+type PFN_vkCmdCopyBufferToImage = FunPtr HS_vkCmdCopyBufferToImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyBufferToImageUnsafe ::
+               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyBufferToImageSafe ::
+               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
+
+instance VulkanProc "vkCmdCopyBufferToImage" where
+        type VkProcType "vkCmdCopyBufferToImage" =
+             HS_vkCmdCopyBufferToImage
+        vkProcSymbol = _VkCmdCopyBufferToImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyBufferToImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferToImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyImageToBuffer :: CString
+
+pattern VkCmdCopyImageToBuffer <-
+        (is_VkCmdCopyImageToBuffer -> True)
+  where VkCmdCopyImageToBuffer = _VkCmdCopyImageToBuffer
+
+{-# INLINE _VkCmdCopyImageToBuffer #-}
+
+_VkCmdCopyImageToBuffer :: CString
+_VkCmdCopyImageToBuffer = Ptr "vkCmdCopyImageToBuffer\NUL"##
+
+{-# INLINE is_VkCmdCopyImageToBuffer #-}
+
+is_VkCmdCopyImageToBuffer :: CString -> Bool
+is_VkCmdCopyImageToBuffer
+  = (EQ ==) . cmpCStrings _VkCmdCopyImageToBuffer
+
+type VkCmdCopyImageToBuffer = "vkCmdCopyImageToBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
+--           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+##else
+vkCmdCopyImageToBufferUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkImage -- ^ srcImage
+                                       ->
+                                 VkImageLayout -- ^ srcImageLayout
+                                               ->
+                                   VkBuffer -- ^ dstBuffer
+                                            -> Word32 -- ^ regionCount
+                                                      -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                               -> IO ()
+vkCmdCopyImageToBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyImageToBuffer)
+
+{-# NOINLINE vkCmdCopyImageToBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
+--           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+##else
+vkCmdCopyImageToBufferSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkImage -- ^ srcImage
+                                     ->
+                               VkImageLayout -- ^ srcImageLayout
+                                             ->
+                                 VkBuffer -- ^ dstBuffer
+                                          -> Word32 -- ^ regionCount
+                                                    -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                             -> IO ()
+vkCmdCopyImageToBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImageToBuffer)
+
+{-# NOINLINE vkCmdCopyImageToBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
+--           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
+--
+vkCmdCopyImageToBuffer ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkImage -- ^ srcImage
+                                 ->
+                           VkImageLayout -- ^ srcImageLayout
+                                         ->
+                             VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyImageToBuffer = vkCmdCopyImageToBufferUnsafe
+##else
+vkCmdCopyImageToBuffer = vkCmdCopyImageToBufferSafe
+
+##endif
+{-# INLINE vkCmdCopyImageToBuffer #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyImageToBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+type HS_vkCmdCopyImageToBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkBuffer -- ^ dstBuffer
+                    -> Word32 -- ^ regionCount
+                              -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                       -> IO ()
+
+type PFN_vkCmdCopyImageToBuffer = FunPtr HS_vkCmdCopyImageToBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyImageToBufferUnsafe ::
+               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyImageToBufferSafe ::
+               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
+
+instance VulkanProc "vkCmdCopyImageToBuffer" where
+        type VkProcType "vkCmdCopyImageToBuffer" =
+             HS_vkCmdCopyImageToBuffer
+        vkProcSymbol = _VkCmdCopyImageToBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyImageToBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageToBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdUpdateBuffer :: CString
+
+pattern VkCmdUpdateBuffer <- (is_VkCmdUpdateBuffer -> True)
+  where VkCmdUpdateBuffer = _VkCmdUpdateBuffer
+
+{-# INLINE _VkCmdUpdateBuffer #-}
+
+_VkCmdUpdateBuffer :: CString
+_VkCmdUpdateBuffer = Ptr "vkCmdUpdateBuffer\NUL"##
+
+{-# INLINE is_VkCmdUpdateBuffer #-}
+
+is_VkCmdUpdateBuffer :: CString -> Bool
+is_VkCmdUpdateBuffer = (EQ ==) . cmpCStrings _VkCmdUpdateBuffer
+
+type VkCmdUpdateBuffer = "vkCmdUpdateBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
+--           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdUpdateBuffer"
+               vkCmdUpdateBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+##else
+vkCmdUpdateBufferUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkBuffer -- ^ dstBuffer
+                                   -> VkDeviceSize -- ^ dstOffset
+                                                   -> VkDeviceSize -- ^ dataSize
+                                                                   -> Ptr Void -- ^ pData
+                                                                               -> IO ()
+vkCmdUpdateBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdUpdateBuffer)
+
+{-# NOINLINE vkCmdUpdateBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
+--           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+##else
+vkCmdUpdateBufferSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ dstBuffer
+                                 -> VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ dataSize
+                                                                 -> Ptr Void -- ^ pData
+                                                                             -> IO ()
+vkCmdUpdateBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdUpdateBuffer)
+
+{-# NOINLINE vkCmdUpdateBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
+--           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
+--
+vkCmdUpdateBuffer ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkBuffer -- ^ dstBuffer
+                             -> VkDeviceSize -- ^ dstOffset
+                                             -> VkDeviceSize -- ^ dataSize
+                                                             -> Ptr Void -- ^ pData
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdUpdateBuffer = vkCmdUpdateBufferUnsafe
+##else
+vkCmdUpdateBuffer = vkCmdUpdateBufferSafe
+
+##endif
+{-# INLINE vkCmdUpdateBuffer #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdUpdateBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize dataSize
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+type HS_vkCmdUpdateBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ dstBuffer
+                -> VkDeviceSize -- ^ dstOffset
+                                -> VkDeviceSize -- ^ dataSize
+                                                -> Ptr Void -- ^ pData
+                                                            -> IO ()
+
+type PFN_vkCmdUpdateBuffer = FunPtr HS_vkCmdUpdateBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdUpdateBufferUnsafe
+               :: PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdUpdateBufferSafe ::
+               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
+
+instance VulkanProc "vkCmdUpdateBuffer" where
+        type VkProcType "vkCmdUpdateBuffer" = HS_vkCmdUpdateBuffer
+        vkProcSymbol = _VkCmdUpdateBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdUpdateBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdUpdateBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdFillBuffer :: CString
+
+pattern VkCmdFillBuffer <- (is_VkCmdFillBuffer -> True)
+  where VkCmdFillBuffer = _VkCmdFillBuffer
+
+{-# INLINE _VkCmdFillBuffer #-}
+
+_VkCmdFillBuffer :: CString
+_VkCmdFillBuffer = Ptr "vkCmdFillBuffer\NUL"##
+
+{-# INLINE is_VkCmdFillBuffer #-}
+
+is_VkCmdFillBuffer :: CString -> Bool
+is_VkCmdFillBuffer = (EQ ==) . cmpCStrings _VkCmdFillBuffer
+
+type VkCmdFillBuffer = "vkCmdFillBuffer"
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
+--           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBufferUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+##else
+vkCmdFillBufferUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ dstBuffer
+                                 -> VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ size
+                                                                 -> Word32 -- ^ data
+                                                                           -> IO ()
+vkCmdFillBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdFillBuffer)
+
+{-# NOINLINE vkCmdFillBufferUnsafe #-}
+##endif
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
+--           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+##else
+vkCmdFillBufferSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkBuffer -- ^ dstBuffer
+                               -> VkDeviceSize -- ^ dstOffset
+                                               -> VkDeviceSize -- ^ size
+                                                               -> Word32 -- ^ data
+                                                                         -> IO ()
+vkCmdFillBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdFillBuffer)
+
+{-# NOINLINE vkCmdFillBufferSafe #-}
+##endif
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
+--           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
+--
+vkCmdFillBuffer ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkBuffer -- ^ dstBuffer
+                           -> VkDeviceSize -- ^ dstOffset
+                                           -> VkDeviceSize -- ^ size
+                                                           -> Word32 -- ^ data
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdFillBuffer = vkCmdFillBufferUnsafe
+##else
+vkCmdFillBuffer = vkCmdFillBufferSafe
+
+##endif
+{-# INLINE vkCmdFillBuffer #-}
+
+-- | transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+--   Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdFillBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize size
+--   >     , uint32_t data
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+type HS_vkCmdFillBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ dstBuffer
+                -> VkDeviceSize -- ^ dstOffset
+                                -> VkDeviceSize -- ^ size
+                                                -> Word32 -- ^ data
+                                                          -> IO ()
+
+type PFN_vkCmdFillBuffer = FunPtr HS_vkCmdFillBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdFillBufferUnsafe
+               :: PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdFillBufferSafe ::
+               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
+
+instance VulkanProc "vkCmdFillBuffer" where
+        type VkProcType "vkCmdFillBuffer" = HS_vkCmdFillBuffer
+        vkProcSymbol = _VkCmdFillBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdFillBufferUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdFillBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearColorImage :: CString
+
+pattern VkCmdClearColorImage <- (is_VkCmdClearColorImage -> True)
+  where VkCmdClearColorImage = _VkCmdClearColorImage
+
+{-# INLINE _VkCmdClearColorImage #-}
+
+_VkCmdClearColorImage :: CString
+_VkCmdClearColorImage = Ptr "vkCmdClearColorImage\NUL"##
+
+{-# INLINE is_VkCmdClearColorImage #-}
+
+is_VkCmdClearColorImage :: CString -> Bool
+is_VkCmdClearColorImage
+  = (EQ ==) . cmpCStrings _VkCmdClearColorImage
+
+type VkCmdClearColorImage = "vkCmdClearColorImage"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
+--           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearColorImage"
+               vkCmdClearColorImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearColorImageUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkImage -- ^ image
+                                     ->
+                               VkImageLayout -- ^ imageLayout
+                                             ->
+                                 Ptr VkClearColorValue -- ^ pColor
+                                                       ->
+                                   Word32 -- ^ rangeCount
+                                          -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                         -> IO ()
+vkCmdClearColorImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdClearColorImage)
+
+{-# NOINLINE vkCmdClearColorImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
+--           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearColorImage"
+               vkCmdClearColorImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearColorImageSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkImage -- ^ image
+                                   ->
+                             VkImageLayout -- ^ imageLayout
+                                           ->
+                               Ptr VkClearColorValue -- ^ pColor
+                                                     ->
+                                 Word32 -- ^ rangeCount
+                                        -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                       -> IO ()
+vkCmdClearColorImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearColorImage)
+
+{-# NOINLINE vkCmdClearColorImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
+--           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
+--
+vkCmdClearColorImage ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ image
+                               ->
+                         VkImageLayout -- ^ imageLayout
+                                       ->
+                           Ptr VkClearColorValue -- ^ pColor
+                                                 ->
+                             Word32 -- ^ rangeCount
+                                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                   -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdClearColorImage = vkCmdClearColorImageUnsafe
+##else
+vkCmdClearColorImage = vkCmdClearColorImageSafe
+
+##endif
+{-# INLINE vkCmdClearColorImage #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdClearColorImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage image
+--   >     , VkImageLayout imageLayout
+--   >     , const VkClearColorValue* pColor
+--   >     , uint32_t rangeCount
+--   >     , const VkImageSubresourceRange* pRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+type HS_vkCmdClearColorImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ image
+               ->
+         VkImageLayout -- ^ imageLayout
+                       ->
+           Ptr VkClearColorValue -- ^ pColor
+                                 ->
+             Word32 -- ^ rangeCount
+                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                   -> IO ()
+
+type PFN_vkCmdClearColorImage = FunPtr HS_vkCmdClearColorImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearColorImageUnsafe ::
+               PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdClearColorImageSafe
+               :: PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
+
+instance VulkanProc "vkCmdClearColorImage" where
+        type VkProcType "vkCmdClearColorImage" = HS_vkCmdClearColorImage
+        vkProcSymbol = _VkCmdClearColorImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdClearColorImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdClearColorImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearDepthStencilImage :: CString
+
+pattern VkCmdClearDepthStencilImage <-
+        (is_VkCmdClearDepthStencilImage -> True)
+  where VkCmdClearDepthStencilImage = _VkCmdClearDepthStencilImage
+
+{-# INLINE _VkCmdClearDepthStencilImage #-}
+
+_VkCmdClearDepthStencilImage :: CString
+_VkCmdClearDepthStencilImage
+  = Ptr "vkCmdClearDepthStencilImage\NUL"##
+
+{-# INLINE is_VkCmdClearDepthStencilImage #-}
+
+is_VkCmdClearDepthStencilImage :: CString -> Bool
+is_VkCmdClearDepthStencilImage
+  = (EQ ==) . cmpCStrings _VkCmdClearDepthStencilImage
+
+type VkCmdClearDepthStencilImage = "vkCmdClearDepthStencilImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
+--           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearDepthStencilImageUnsafe ::
+                                  VkCommandBuffer -- ^ commandBuffer
+                                                  ->
+                                    VkImage -- ^ image
+                                            ->
+                                      VkImageLayout -- ^ imageLayout
+                                                    ->
+                                        Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                                     ->
+                                          Word32 -- ^ rangeCount
+                                                 -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                                -> IO ()
+vkCmdClearDepthStencilImageUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdClearDepthStencilImage)
+
+{-# NOINLINE vkCmdClearDepthStencilImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
+--           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearDepthStencilImageSafe ::
+                                VkCommandBuffer -- ^ commandBuffer
+                                                ->
+                                  VkImage -- ^ image
+                                          ->
+                                    VkImageLayout -- ^ imageLayout
+                                                  ->
+                                      Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                                   ->
+                                        Word32 -- ^ rangeCount
+                                               -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                              -> IO ()
+vkCmdClearDepthStencilImageSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCmdClearDepthStencilImage)
+
+{-# NOINLINE vkCmdClearDepthStencilImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
+--           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
+--
+vkCmdClearDepthStencilImage ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              VkImage -- ^ image
+                                      ->
+                                VkImageLayout -- ^ imageLayout
+                                              ->
+                                  Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                               ->
+                                    Word32 -- ^ rangeCount
+                                           -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImageUnsafe
+##else
+vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImageSafe
+
+##endif
+{-# INLINE vkCmdClearDepthStencilImage #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdClearDepthStencilImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage image
+--   >     , VkImageLayout imageLayout
+--   >     , const VkClearDepthStencilValue* pDepthStencil
+--   >     , uint32_t rangeCount
+--   >     , const VkImageSubresourceRange* pRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+type HS_vkCmdClearDepthStencilImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ image
+               ->
+         VkImageLayout -- ^ imageLayout
+                       ->
+           Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                        ->
+             Word32 -- ^ rangeCount
+                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                   -> IO ()
+
+type PFN_vkCmdClearDepthStencilImage =
+     FunPtr HS_vkCmdClearDepthStencilImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearDepthStencilImageUnsafe ::
+               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdClearDepthStencilImageSafe ::
+               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
+
+instance VulkanProc "vkCmdClearDepthStencilImage" where
+        type VkProcType "vkCmdClearDepthStencilImage" =
+             HS_vkCmdClearDepthStencilImage
+        vkProcSymbol = _VkCmdClearDepthStencilImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdClearDepthStencilImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdClearDepthStencilImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearAttachments :: CString
+
+pattern VkCmdClearAttachments <- (is_VkCmdClearAttachments -> True)
+  where VkCmdClearAttachments = _VkCmdClearAttachments
+
+{-# INLINE _VkCmdClearAttachments #-}
+
+_VkCmdClearAttachments :: CString
+_VkCmdClearAttachments = Ptr "vkCmdClearAttachments\NUL"##
+
+{-# INLINE is_VkCmdClearAttachments #-}
+
+is_VkCmdClearAttachments :: CString -> Bool
+is_VkCmdClearAttachments
+  = (EQ ==) . cmpCStrings _VkCmdClearAttachments
+
+type VkCmdClearAttachments = "vkCmdClearAttachments"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
+--           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearAttachments"
+               vkCmdClearAttachmentsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+##else
+vkCmdClearAttachmentsUnsafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              Word32 -- ^ attachmentCount
+                                     ->
+                                Ptr VkClearAttachment -- ^ pAttachments
+                                                      -> Word32 -- ^ rectCount
+                                                                -> Ptr VkClearRect -- ^ pRects
+                                                                                   -> IO ()
+vkCmdClearAttachmentsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdClearAttachments)
+
+{-# NOINLINE vkCmdClearAttachmentsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
+--           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearAttachments"
+               vkCmdClearAttachmentsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+##else
+vkCmdClearAttachmentsSafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            Word32 -- ^ attachmentCount
+                                   ->
+                              Ptr VkClearAttachment -- ^ pAttachments
+                                                    -> Word32 -- ^ rectCount
+                                                              -> Ptr VkClearRect -- ^ pRects
+                                                                                 -> IO ()
+vkCmdClearAttachmentsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearAttachments)
+
+{-# NOINLINE vkCmdClearAttachmentsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
+--           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
+--
+vkCmdClearAttachments ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ attachmentCount
+                               ->
+                          Ptr VkClearAttachment -- ^ pAttachments
+                                                -> Word32 -- ^ rectCount
+                                                          -> Ptr VkClearRect -- ^ pRects
+                                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdClearAttachments = vkCmdClearAttachmentsUnsafe
+##else
+vkCmdClearAttachments = vkCmdClearAttachmentsSafe
+
+##endif
+{-# INLINE vkCmdClearAttachments #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdClearAttachments
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t attachmentCount
+--   >     , const VkClearAttachment* pAttachments
+--   >     , uint32_t rectCount
+--   >     , const VkClearRect* pRects
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+type HS_vkCmdClearAttachments =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ attachmentCount
+              ->
+         Ptr VkClearAttachment -- ^ pAttachments
+                               -> Word32 -- ^ rectCount
+                                         -> Ptr VkClearRect -- ^ pRects
+                                                            -> IO ()
+
+type PFN_vkCmdClearAttachments = FunPtr HS_vkCmdClearAttachments
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearAttachmentsUnsafe ::
+               PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
+
+foreign import ccall safe "dynamic" unwrapVkCmdClearAttachmentsSafe
+               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
+
+instance VulkanProc "vkCmdClearAttachments" where
+        type VkProcType "vkCmdClearAttachments" = HS_vkCmdClearAttachments
+        vkProcSymbol = _VkCmdClearAttachments
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdClearAttachmentsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdClearAttachmentsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResolveImage :: CString
+
+pattern VkCmdResolveImage <- (is_VkCmdResolveImage -> True)
+  where VkCmdResolveImage = _VkCmdResolveImage
+
+{-# INLINE _VkCmdResolveImage #-}
+
+_VkCmdResolveImage :: CString
+_VkCmdResolveImage = Ptr "vkCmdResolveImage\NUL"##
+
+{-# INLINE is_VkCmdResolveImage #-}
+
+is_VkCmdResolveImage :: CString -> Bool
+is_VkCmdResolveImage = (EQ ==) . cmpCStrings _VkCmdResolveImage
+
+type VkCmdResolveImage = "vkCmdResolveImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
+--           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResolveImage"
+               vkCmdResolveImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+##else
+vkCmdResolveImageUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkImage -- ^ srcImage
+                                  ->
+                            VkImageLayout -- ^ srcImageLayout
+                                          ->
+                              VkImage -- ^ dstImage
+                                      -> VkImageLayout -- ^ dstImageLayout
+                                                       -> Word32 -- ^ regionCount
+                                                                 -> Ptr VkImageResolve -- ^ pRegions
+                                                                                       -> IO ()
+vkCmdResolveImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResolveImage)
+
+{-# NOINLINE vkCmdResolveImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
+--           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+##else
+vkCmdResolveImageSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkImage -- ^ srcImage
+                                ->
+                          VkImageLayout -- ^ srcImageLayout
+                                        ->
+                            VkImage -- ^ dstImage
+                                    -> VkImageLayout -- ^ dstImageLayout
+                                                     -> Word32 -- ^ regionCount
+                                                               -> Ptr VkImageResolve -- ^ pRegions
+                                                                                     -> IO ()
+vkCmdResolveImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResolveImage)
+
+{-# NOINLINE vkCmdResolveImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
+--           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
+--
+vkCmdResolveImage ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkImage -- ^ srcImage
+                            ->
+                      VkImageLayout -- ^ srcImageLayout
+                                    ->
+                        VkImage -- ^ dstImage
+                                -> VkImageLayout -- ^ dstImageLayout
+                                                 -> Word32 -- ^ regionCount
+                                                           -> Ptr VkImageResolve -- ^ pRegions
+                                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdResolveImage = vkCmdResolveImageUnsafe
+##else
+vkCmdResolveImage = vkCmdResolveImageSafe
+
+##endif
+{-# INLINE vkCmdResolveImage #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdResolveImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageResolve* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+type HS_vkCmdResolveImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   -> VkImageLayout -- ^ dstImageLayout
+                                    -> Word32 -- ^ regionCount
+                                              -> Ptr VkImageResolve -- ^ pRegions
+                                                                    -> IO ()
+
+type PFN_vkCmdResolveImage = FunPtr HS_vkCmdResolveImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResolveImageUnsafe
+               :: PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdResolveImageSafe ::
+               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
+
+instance VulkanProc "vkCmdResolveImage" where
+        type VkProcType "vkCmdResolveImage" = HS_vkCmdResolveImage
+        vkProcSymbol = _VkCmdResolveImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdResolveImageUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdResolveImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetEvent :: CString
+
+pattern VkCmdSetEvent <- (is_VkCmdSetEvent -> True)
+  where VkCmdSetEvent = _VkCmdSetEvent
+
+{-# INLINE _VkCmdSetEvent #-}
+
+_VkCmdSetEvent :: CString
+_VkCmdSetEvent = Ptr "vkCmdSetEvent\NUL"##
+
+{-# INLINE is_VkCmdSetEvent #-}
+
+is_VkCmdSetEvent :: CString -> Bool
+is_VkCmdSetEvent = (EQ ==) . cmpCStrings _VkCmdSetEvent
+
+type VkCmdSetEvent = "vkCmdSetEvent"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
+--           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEventUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdSetEventUnsafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkEvent -- ^ event
+                                               -> VkPipelineStageFlags -- ^ stageMask
+                                                                       -> IO ()
+vkCmdSetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetEvent)
+
+{-# NOINLINE vkCmdSetEventUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
+--           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdSetEventSafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkEvent -- ^ event
+                                             -> VkPipelineStageFlags -- ^ stageMask
+                                                                     -> IO ()
+vkCmdSetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetEvent)
+
+{-# NOINLINE vkCmdSetEventSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
+--           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
+--
+vkCmdSetEvent ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> VkEvent -- ^ event
+                                         -> VkPipelineStageFlags -- ^ stageMask
+                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetEvent = vkCmdSetEventUnsafe
+##else
+vkCmdSetEvent = vkCmdSetEventSafe
+
+##endif
+{-# INLINE vkCmdSetEvent #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdSetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+type HS_vkCmdSetEvent =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkEvent -- ^ event
+                                -> VkPipelineStageFlags -- ^ stageMask
+                                                        -> IO ()
+
+type PFN_vkCmdSetEvent = FunPtr HS_vkCmdSetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetEventUnsafe ::
+               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetEventSafe ::
+               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
+
+instance VulkanProc "vkCmdSetEvent" where
+        type VkProcType "vkCmdSetEvent" = HS_vkCmdSetEvent
+        vkProcSymbol = _VkCmdSetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetEventUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResetEvent :: CString
+
+pattern VkCmdResetEvent <- (is_VkCmdResetEvent -> True)
+  where VkCmdResetEvent = _VkCmdResetEvent
+
+{-# INLINE _VkCmdResetEvent #-}
+
+_VkCmdResetEvent :: CString
+_VkCmdResetEvent = Ptr "vkCmdResetEvent\NUL"##
+
+{-# INLINE is_VkCmdResetEvent #-}
+
+is_VkCmdResetEvent :: CString -> Bool
+is_VkCmdResetEvent = (EQ ==) . cmpCStrings _VkCmdResetEvent
+
+type VkCmdResetEvent = "vkCmdResetEvent"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
+--           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEventUnsafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkEvent -- ^ event
+                                             -> VkPipelineStageFlags -- ^ stageMask
+                                                                     -> IO ()
+
+##else
+vkCmdResetEventUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkEvent -- ^ event
+                                                 -> VkPipelineStageFlags -- ^ stageMask
+                                                                         -> IO ()
+vkCmdResetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResetEvent)
+
+{-# NOINLINE vkCmdResetEventUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
+--           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdResetEventSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkEvent -- ^ event
+                                               -> VkPipelineStageFlags -- ^ stageMask
+                                                                       -> IO ()
+vkCmdResetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetEvent)
+
+{-# NOINLINE vkCmdResetEventSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
+--           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
+--
+vkCmdResetEvent ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> VkEvent -- ^ event
+                                           -> VkPipelineStageFlags -- ^ stageMask
+                                                                   -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdResetEvent = vkCmdResetEventUnsafe
+##else
+vkCmdResetEvent = vkCmdResetEventSafe
+
+##endif
+{-# INLINE vkCmdResetEvent #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdResetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+type HS_vkCmdResetEvent =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkEvent -- ^ event
+                                -> VkPipelineStageFlags -- ^ stageMask
+                                                        -> IO ()
+
+type PFN_vkCmdResetEvent = FunPtr HS_vkCmdResetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResetEventUnsafe
+               :: PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
+
+foreign import ccall safe "dynamic" unwrapVkCmdResetEventSafe ::
+               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
+
+instance VulkanProc "vkCmdResetEvent" where
+        type VkProcType "vkCmdResetEvent" = HS_vkCmdResetEvent
+        vkProcSymbol = _VkCmdResetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdResetEventUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdResetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdWaitEvents :: CString
+
+pattern VkCmdWaitEvents <- (is_VkCmdWaitEvents -> True)
+  where VkCmdWaitEvents = _VkCmdWaitEvents
+
+{-# INLINE _VkCmdWaitEvents #-}
+
+_VkCmdWaitEvents :: CString
+_VkCmdWaitEvents = Ptr "vkCmdWaitEvents\NUL"##
+
+{-# INLINE is_VkCmdWaitEvents #-}
+
+is_VkCmdWaitEvents :: CString -> Bool
+is_VkCmdWaitEvents = (EQ ==) . cmpCStrings _VkCmdWaitEvents
+
+type VkCmdWaitEvents = "vkCmdWaitEvents"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
+--           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdWaitEvents" vkCmdWaitEventsUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ eventCount
+                        ->
+                   Ptr VkEvent -- ^ pEvents
+                               ->
+                     VkPipelineStageFlags -- ^ srcStageMask
+                                          ->
+                       VkPipelineStageFlags -- ^ dstStageMask
+                                            ->
+                         Word32 -- ^ memoryBarrierCount
+                                ->
+                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                               ->
+                             Word32 -- ^ bufferMemoryBarrierCount
+                                    ->
+                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                         ->
+                                 Word32 -- ^ imageMemoryBarrierCount
+                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                    -> IO ()
+
+##else
+vkCmdWaitEventsUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ eventCount
+                               ->
+                          Ptr VkEvent -- ^ pEvents
+                                      ->
+                            VkPipelineStageFlags -- ^ srcStageMask
+                                                 ->
+                              VkPipelineStageFlags -- ^ dstStageMask
+                                                   ->
+                                Word32 -- ^ memoryBarrierCount
+                                       ->
+                                  Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                      ->
+                                    Word32 -- ^ bufferMemoryBarrierCount
+                                           ->
+                                      Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                ->
+                                        Word32 -- ^ imageMemoryBarrierCount
+                                               -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                           -> IO ()
+vkCmdWaitEventsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdWaitEvents)
+
+{-# NOINLINE vkCmdWaitEventsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
+--           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdWaitEvents" vkCmdWaitEventsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ eventCount
+                        ->
+                   Ptr VkEvent -- ^ pEvents
+                               ->
+                     VkPipelineStageFlags -- ^ srcStageMask
+                                          ->
+                       VkPipelineStageFlags -- ^ dstStageMask
+                                            ->
+                         Word32 -- ^ memoryBarrierCount
+                                ->
+                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                               ->
+                             Word32 -- ^ bufferMemoryBarrierCount
+                                    ->
+                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                         ->
+                                 Word32 -- ^ imageMemoryBarrierCount
+                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                    -> IO ()
+
+##else
+vkCmdWaitEventsSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      Word32 -- ^ eventCount
+                             ->
+                        Ptr VkEvent -- ^ pEvents
+                                    ->
+                          VkPipelineStageFlags -- ^ srcStageMask
+                                               ->
+                            VkPipelineStageFlags -- ^ dstStageMask
+                                                 ->
+                              Word32 -- ^ memoryBarrierCount
+                                     ->
+                                Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                    ->
+                                  Word32 -- ^ bufferMemoryBarrierCount
+                                         ->
+                                    Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                              ->
+                                      Word32 -- ^ imageMemoryBarrierCount
+                                             -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                         -> IO ()
+vkCmdWaitEventsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWaitEvents)
+
+{-# NOINLINE vkCmdWaitEventsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
+--           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
+--
+vkCmdWaitEvents ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  Word32 -- ^ eventCount
+                         ->
+                    Ptr VkEvent -- ^ pEvents
+                                ->
+                      VkPipelineStageFlags -- ^ srcStageMask
+                                           ->
+                        VkPipelineStageFlags -- ^ dstStageMask
+                                             ->
+                          Word32 -- ^ memoryBarrierCount
+                                 ->
+                            Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                ->
+                              Word32 -- ^ bufferMemoryBarrierCount
+                                     ->
+                                Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                          ->
+                                  Word32 -- ^ imageMemoryBarrierCount
+                                         -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdWaitEvents = vkCmdWaitEventsUnsafe
+##else
+vkCmdWaitEvents = vkCmdWaitEventsSafe
+
+##endif
+{-# INLINE vkCmdWaitEvents #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdWaitEvents
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t eventCount
+--   >     , const VkEvent* pEvents
+--   >     , VkPipelineStageFlags srcStageMask
+--   >     , VkPipelineStageFlags dstStageMask
+--   >     , uint32_t memoryBarrierCount
+--   >     , const VkMemoryBarrier* pMemoryBarriers
+--   >     , uint32_t bufferMemoryBarrierCount
+--   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+--   >     , uint32_t imageMemoryBarrierCount
+--   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+type HS_vkCmdWaitEvents =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ eventCount
+              ->
+         Ptr VkEvent -- ^ pEvents
+                     ->
+           VkPipelineStageFlags -- ^ srcStageMask
+                                ->
+             VkPipelineStageFlags -- ^ dstStageMask
+                                  ->
+               Word32 -- ^ memoryBarrierCount
+                      ->
+                 Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                     ->
+                   Word32 -- ^ bufferMemoryBarrierCount
+                          ->
+                     Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                               ->
+                       Word32 -- ^ imageMemoryBarrierCount
+                              -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                          -> IO ()
+
+type PFN_vkCmdWaitEvents = FunPtr HS_vkCmdWaitEvents
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdWaitEventsUnsafe
+               :: PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
+
+foreign import ccall safe "dynamic" unwrapVkCmdWaitEventsSafe ::
+               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
+
+instance VulkanProc "vkCmdWaitEvents" where
+        type VkProcType "vkCmdWaitEvents" = HS_vkCmdWaitEvents
+        vkProcSymbol = _VkCmdWaitEvents
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdWaitEventsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdWaitEventsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdPipelineBarrier :: CString
+
+pattern VkCmdPipelineBarrier <- (is_VkCmdPipelineBarrier -> True)
+  where VkCmdPipelineBarrier = _VkCmdPipelineBarrier
+
+{-# INLINE _VkCmdPipelineBarrier #-}
+
+_VkCmdPipelineBarrier :: CString
+_VkCmdPipelineBarrier = Ptr "vkCmdPipelineBarrier\NUL"##
+
+{-# INLINE is_VkCmdPipelineBarrier #-}
+
+is_VkCmdPipelineBarrier :: CString -> Bool
+is_VkCmdPipelineBarrier
+  = (EQ ==) . cmpCStrings _VkCmdPipelineBarrier
+
+type VkCmdPipelineBarrier = "vkCmdPipelineBarrier"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
+--           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdPipelineBarrier"
+               vkCmdPipelineBarrierUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlags -- ^ srcStageMask
+                                      ->
+                   VkPipelineStageFlags -- ^ dstStageMask
+                                        ->
+                     VkDependencyFlags -- ^ dependencyFlags
+                                       ->
+                       Word32 -- ^ memoryBarrierCount
+                              ->
+                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                             ->
+                           Word32 -- ^ bufferMemoryBarrierCount
+                                  ->
+                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                       ->
+                               Word32 -- ^ imageMemoryBarrierCount
+                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                  -> IO ()
+
+##else
+vkCmdPipelineBarrierUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkPipelineStageFlags -- ^ srcStageMask
+                                                  ->
+                               VkPipelineStageFlags -- ^ dstStageMask
+                                                    ->
+                                 VkDependencyFlags -- ^ dependencyFlags
+                                                   ->
+                                   Word32 -- ^ memoryBarrierCount
+                                          ->
+                                     Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                         ->
+                                       Word32 -- ^ bufferMemoryBarrierCount
+                                              ->
+                                         Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                   ->
+                                           Word32 -- ^ imageMemoryBarrierCount
+                                                  -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                              -> IO ()
+vkCmdPipelineBarrierUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdPipelineBarrier)
+
+{-# NOINLINE vkCmdPipelineBarrierUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
+--           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdPipelineBarrier"
+               vkCmdPipelineBarrierSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlags -- ^ srcStageMask
+                                      ->
+                   VkPipelineStageFlags -- ^ dstStageMask
+                                        ->
+                     VkDependencyFlags -- ^ dependencyFlags
+                                       ->
+                       Word32 -- ^ memoryBarrierCount
+                              ->
+                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                             ->
+                           Word32 -- ^ bufferMemoryBarrierCount
+                                  ->
+                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                       ->
+                               Word32 -- ^ imageMemoryBarrierCount
+                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                  -> IO ()
+
+##else
+vkCmdPipelineBarrierSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkPipelineStageFlags -- ^ srcStageMask
+                                                ->
+                             VkPipelineStageFlags -- ^ dstStageMask
+                                                  ->
+                               VkDependencyFlags -- ^ dependencyFlags
+                                                 ->
+                                 Word32 -- ^ memoryBarrierCount
+                                        ->
+                                   Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                       ->
+                                     Word32 -- ^ bufferMemoryBarrierCount
+                                            ->
+                                       Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                 ->
+                                         Word32 -- ^ imageMemoryBarrierCount
+                                                -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                            -> IO ()
+vkCmdPipelineBarrierSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPipelineBarrier)
+
+{-# NOINLINE vkCmdPipelineBarrierSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
+--           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
+--
+vkCmdPipelineBarrier ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkPipelineStageFlags -- ^ srcStageMask
+                                            ->
+                         VkPipelineStageFlags -- ^ dstStageMask
+                                              ->
+                           VkDependencyFlags -- ^ dependencyFlags
+                                             ->
+                             Word32 -- ^ memoryBarrierCount
+                                    ->
+                               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                   ->
+                                 Word32 -- ^ bufferMemoryBarrierCount
+                                        ->
+                                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                             ->
+                                     Word32 -- ^ imageMemoryBarrierCount
+                                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdPipelineBarrier = vkCmdPipelineBarrierUnsafe
+##else
+vkCmdPipelineBarrier = vkCmdPipelineBarrierSafe
+
+##endif
+{-# INLINE vkCmdPipelineBarrier #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdPipelineBarrier
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlags srcStageMask
+--   >     , VkPipelineStageFlags dstStageMask
+--   >     , VkDependencyFlags dependencyFlags
+--   >     , uint32_t memoryBarrierCount
+--   >     , const VkMemoryBarrier* pMemoryBarriers
+--   >     , uint32_t bufferMemoryBarrierCount
+--   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+--   >     , uint32_t imageMemoryBarrierCount
+--   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+type HS_vkCmdPipelineBarrier =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineStageFlags -- ^ srcStageMask
+                            ->
+         VkPipelineStageFlags -- ^ dstStageMask
+                              ->
+           VkDependencyFlags -- ^ dependencyFlags
+                             ->
+             Word32 -- ^ memoryBarrierCount
+                    ->
+               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                   ->
+                 Word32 -- ^ bufferMemoryBarrierCount
+                        ->
+                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                             ->
+                     Word32 -- ^ imageMemoryBarrierCount
+                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                        -> IO ()
+
+type PFN_vkCmdPipelineBarrier = FunPtr HS_vkCmdPipelineBarrier
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdPipelineBarrierUnsafe ::
+               PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
+
+foreign import ccall safe "dynamic" unwrapVkCmdPipelineBarrierSafe
+               :: PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
+
+instance VulkanProc "vkCmdPipelineBarrier" where
+        type VkProcType "vkCmdPipelineBarrier" = HS_vkCmdPipelineBarrier
+        vkProcSymbol = _VkCmdPipelineBarrier
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdPipelineBarrierUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdPipelineBarrierSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBeginQuery :: CString
+
+pattern VkCmdBeginQuery <- (is_VkCmdBeginQuery -> True)
+  where VkCmdBeginQuery = _VkCmdBeginQuery
+
+{-# INLINE _VkCmdBeginQuery #-}
+
+_VkCmdBeginQuery :: CString
+_VkCmdBeginQuery = Ptr "vkCmdBeginQuery\NUL"##
+
+{-# INLINE is_VkCmdBeginQuery #-}
+
+is_VkCmdBeginQuery :: CString -> Bool
+is_VkCmdBeginQuery = (EQ ==) . cmpCStrings _VkCmdBeginQuery
+
+type VkCmdBeginQuery = "vkCmdBeginQuery"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
+--           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQueryUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+##else
+vkCmdBeginQueryUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ query
+                                              -> VkQueryControlFlags -- ^ flags
+                                                                     -> IO ()
+vkCmdBeginQueryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBeginQuery)
+
+{-# NOINLINE vkCmdBeginQueryUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
+--           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+##else
+vkCmdBeginQuerySafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkQueryPool -- ^ queryPool
+                                  -> Word32 -- ^ query
+                                            -> VkQueryControlFlags -- ^ flags
+                                                                   -> IO ()
+vkCmdBeginQuerySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginQuery)
+
+{-# NOINLINE vkCmdBeginQuerySafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
+--           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
+--
+vkCmdBeginQuery ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkQueryPool -- ^ queryPool
+                              -> Word32 -- ^ query
+                                        -> VkQueryControlFlags -- ^ flags
+                                                               -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBeginQuery = vkCmdBeginQueryUnsafe
+##else
+vkCmdBeginQuery = vkCmdBeginQuerySafe
+
+##endif
+{-# INLINE vkCmdBeginQuery #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBeginQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     , VkQueryControlFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+type HS_vkCmdBeginQuery =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkQueryPool -- ^ queryPool
+                   -> Word32 -- ^ query
+                             -> VkQueryControlFlags -- ^ flags
+                                                    -> IO ()
+
+type PFN_vkCmdBeginQuery = FunPtr HS_vkCmdBeginQuery
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBeginQueryUnsafe
+               :: PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
+
+foreign import ccall safe "dynamic" unwrapVkCmdBeginQuerySafe ::
+               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
+
+instance VulkanProc "vkCmdBeginQuery" where
+        type VkProcType "vkCmdBeginQuery" = HS_vkCmdBeginQuery
+        vkProcSymbol = _VkCmdBeginQuery
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBeginQueryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBeginQuerySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdEndQuery :: CString
+
+pattern VkCmdEndQuery <- (is_VkCmdEndQuery -> True)
+  where VkCmdEndQuery = _VkCmdEndQuery
+
+{-# INLINE _VkCmdEndQuery #-}
+
+_VkCmdEndQuery :: CString
+_VkCmdEndQuery = Ptr "vkCmdEndQuery\NUL"##
+
+{-# INLINE is_VkCmdEndQuery #-}
+
+is_VkCmdEndQuery :: CString -> Bool
+is_VkCmdEndQuery = (EQ ==) . cmpCStrings _VkCmdEndQuery
+
+type VkCmdEndQuery = "vkCmdEndQuery"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
+--           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQueryUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+##else
+vkCmdEndQueryUnsafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkQueryPool -- ^ queryPool
+                                                   -> Word32 -- ^ query
+                                                             -> IO ()
+vkCmdEndQueryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdEndQuery)
+
+{-# NOINLINE vkCmdEndQueryUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
+--           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+##else
+vkCmdEndQuerySafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkQueryPool -- ^ queryPool
+                                                 -> Word32 -- ^ query
+                                                           -> IO ()
+vkCmdEndQuerySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndQuery)
+
+{-# NOINLINE vkCmdEndQuerySafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
+--           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
+--
+vkCmdEndQuery :: VkCommandBuffer -- ^ commandBuffer
+                                 -> VkQueryPool -- ^ queryPool
+                                                -> Word32 -- ^ query
+                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdEndQuery = vkCmdEndQueryUnsafe
+##else
+vkCmdEndQuery = vkCmdEndQuerySafe
+
+##endif
+{-# INLINE vkCmdEndQuery #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdEndQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+type HS_vkCmdEndQuery =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ query
+                                              -> IO ()
+
+type PFN_vkCmdEndQuery = FunPtr HS_vkCmdEndQuery
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdEndQueryUnsafe ::
+               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
+
+foreign import ccall safe "dynamic" unwrapVkCmdEndQuerySafe ::
+               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
+
+instance VulkanProc "vkCmdEndQuery" where
+        type VkProcType "vkCmdEndQuery" = HS_vkCmdEndQuery
+        vkProcSymbol = _VkCmdEndQuery
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdEndQueryUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdEndQuerySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResetQueryPool :: CString
+
+pattern VkCmdResetQueryPool <- (is_VkCmdResetQueryPool -> True)
+  where VkCmdResetQueryPool = _VkCmdResetQueryPool
+
+{-# INLINE _VkCmdResetQueryPool #-}
+
+_VkCmdResetQueryPool :: CString
+_VkCmdResetQueryPool = Ptr "vkCmdResetQueryPool\NUL"##
+
+{-# INLINE is_VkCmdResetQueryPool #-}
+
+is_VkCmdResetQueryPool :: CString -> Bool
+is_VkCmdResetQueryPool = (EQ ==) . cmpCStrings _VkCmdResetQueryPool
+
+type VkCmdResetQueryPool = "vkCmdResetQueryPool"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
+--           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResetQueryPool"
+               vkCmdResetQueryPoolUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+##else
+vkCmdResetQueryPoolUnsafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          -> VkQueryPool -- ^ queryPool
+                                                         -> Word32 -- ^ firstQuery
+                                                                   -> Word32 -- ^ queryCount
+                                                                             -> IO ()
+vkCmdResetQueryPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResetQueryPool)
+
+{-# NOINLINE vkCmdResetQueryPoolUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
+--           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResetQueryPool"
+               vkCmdResetQueryPoolSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+##else
+vkCmdResetQueryPoolSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> VkQueryPool -- ^ queryPool
+                                                       -> Word32 -- ^ firstQuery
+                                                                 -> Word32 -- ^ queryCount
+                                                                           -> IO ()
+vkCmdResetQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetQueryPool)
+
+{-# NOINLINE vkCmdResetQueryPoolSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
+--           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
+--
+vkCmdResetQueryPool ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkQueryPool -- ^ queryPool
+                                                   -> Word32 -- ^ firstQuery
+                                                             -> Word32 -- ^ queryCount
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdResetQueryPool = vkCmdResetQueryPoolUnsafe
+##else
+vkCmdResetQueryPool = vkCmdResetQueryPoolSafe
+
+##endif
+{-# INLINE vkCmdResetQueryPool #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdResetQueryPool
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+type HS_vkCmdResetQueryPool =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ firstQuery
+                                              -> Word32 -- ^ queryCount
+                                                        -> IO ()
+
+type PFN_vkCmdResetQueryPool = FunPtr HS_vkCmdResetQueryPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdResetQueryPoolUnsafe ::
+               PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkCmdResetQueryPoolSafe
+               :: PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
+
+instance VulkanProc "vkCmdResetQueryPool" where
+        type VkProcType "vkCmdResetQueryPool" = HS_vkCmdResetQueryPool
+        vkProcSymbol = _VkCmdResetQueryPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdResetQueryPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdResetQueryPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdWriteTimestamp :: CString
+
+pattern VkCmdWriteTimestamp <- (is_VkCmdWriteTimestamp -> True)
+  where VkCmdWriteTimestamp = _VkCmdWriteTimestamp
+
+{-# INLINE _VkCmdWriteTimestamp #-}
+
+_VkCmdWriteTimestamp :: CString
+_VkCmdWriteTimestamp = Ptr "vkCmdWriteTimestamp\NUL"##
+
+{-# INLINE is_VkCmdWriteTimestamp #-}
+
+is_VkCmdWriteTimestamp :: CString -> Bool
+is_VkCmdWriteTimestamp = (EQ ==) . cmpCStrings _VkCmdWriteTimestamp
+
+type VkCmdWriteTimestamp = "vkCmdWriteTimestamp"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
+--           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestampUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+##else
+vkCmdWriteTimestampUnsafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            VkPipelineStageFlagBits -- ^ pipelineStage
+                                                    -> VkQueryPool -- ^ queryPool
+                                                                   -> Word32 -- ^ query
+                                                                             -> IO ()
+vkCmdWriteTimestampUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdWriteTimestamp)
+
+{-# NOINLINE vkCmdWriteTimestampUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
+--           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestampSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+##else
+vkCmdWriteTimestampSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkPipelineStageFlagBits -- ^ pipelineStage
+                                                  -> VkQueryPool -- ^ queryPool
+                                                                 -> Word32 -- ^ query
+                                                                           -> IO ()
+vkCmdWriteTimestampSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWriteTimestamp)
+
+{-# NOINLINE vkCmdWriteTimestampSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
+--           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
+--
+vkCmdWriteTimestamp ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkPipelineStageFlagBits -- ^ pipelineStage
+                                              -> VkQueryPool -- ^ queryPool
+                                                             -> Word32 -- ^ query
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdWriteTimestamp = vkCmdWriteTimestampUnsafe
+##else
+vkCmdWriteTimestamp = vkCmdWriteTimestampSafe
+
+##endif
+{-# INLINE vkCmdWriteTimestamp #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdWriteTimestamp
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlagBits pipelineStage
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+type HS_vkCmdWriteTimestamp =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineStageFlagBits -- ^ pipelineStage
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+type PFN_vkCmdWriteTimestamp = FunPtr HS_vkCmdWriteTimestamp
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdWriteTimestampUnsafe ::
+               PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
+
+foreign import ccall safe "dynamic" unwrapVkCmdWriteTimestampSafe
+               :: PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
+
+instance VulkanProc "vkCmdWriteTimestamp" where
+        type VkProcType "vkCmdWriteTimestamp" = HS_vkCmdWriteTimestamp
+        vkProcSymbol = _VkCmdWriteTimestamp
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdWriteTimestampUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdWriteTimestampSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyQueryPoolResults :: CString
+
+pattern VkCmdCopyQueryPoolResults <-
+        (is_VkCmdCopyQueryPoolResults -> True)
+  where VkCmdCopyQueryPoolResults = _VkCmdCopyQueryPoolResults
+
+{-# INLINE _VkCmdCopyQueryPoolResults #-}
+
+_VkCmdCopyQueryPoolResults :: CString
+_VkCmdCopyQueryPoolResults = Ptr "vkCmdCopyQueryPoolResults\NUL"##
+
+{-# INLINE is_VkCmdCopyQueryPoolResults #-}
+
+is_VkCmdCopyQueryPoolResults :: CString -> Bool
+is_VkCmdCopyQueryPoolResults
+  = (EQ ==) . cmpCStrings _VkCmdCopyQueryPoolResults
+
+type VkCmdCopyQueryPoolResults = "vkCmdCopyQueryPoolResults"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
+--           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResultsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+##else
+vkCmdCopyQueryPoolResultsUnsafe ::
+                                VkCommandBuffer -- ^ commandBuffer
+                                                ->
+                                  VkQueryPool -- ^ queryPool
+                                              ->
+                                    Word32 -- ^ firstQuery
+                                           ->
+                                      Word32 -- ^ queryCount
+                                             ->
+                                        VkBuffer -- ^ dstBuffer
+                                                 ->
+                                          VkDeviceSize -- ^ dstOffset
+                                                       ->
+                                            VkDeviceSize -- ^ stride
+                                                         -> VkQueryResultFlags -- ^ flags
+                                                                               -> IO ()
+vkCmdCopyQueryPoolResultsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdCopyQueryPoolResults)
+
+{-# NOINLINE vkCmdCopyQueryPoolResultsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
+--           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResultsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+##else
+vkCmdCopyQueryPoolResultsSafe ::
+                              VkCommandBuffer -- ^ commandBuffer
+                                              ->
+                                VkQueryPool -- ^ queryPool
+                                            ->
+                                  Word32 -- ^ firstQuery
+                                         ->
+                                    Word32 -- ^ queryCount
+                                           ->
+                                      VkBuffer -- ^ dstBuffer
+                                               ->
+                                        VkDeviceSize -- ^ dstOffset
+                                                     -> VkDeviceSize -- ^ stride
+                                                                     -> VkQueryResultFlags -- ^ flags
+                                                                                           -> IO ()
+vkCmdCopyQueryPoolResultsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyQueryPoolResults)
+
+{-# NOINLINE vkCmdCopyQueryPoolResultsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
+--           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
+--
+vkCmdCopyQueryPoolResults ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            VkQueryPool -- ^ queryPool
+                                        ->
+                              Word32 -- ^ firstQuery
+                                     ->
+                                Word32 -- ^ queryCount
+                                       ->
+                                  VkBuffer -- ^ dstBuffer
+                                           ->
+                                    VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ stride
+                                                                 -> VkQueryResultFlags -- ^ flags
+                                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResultsUnsafe
+##else
+vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResultsSafe
+
+##endif
+{-# INLINE vkCmdCopyQueryPoolResults #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyQueryPoolResults
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize stride
+--   >     , VkQueryResultFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+type HS_vkCmdCopyQueryPoolResults =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkQueryPool -- ^ queryPool
+                   ->
+         Word32 -- ^ firstQuery
+                ->
+           Word32 -- ^ queryCount
+                  ->
+             VkBuffer -- ^ dstBuffer
+                      ->
+               VkDeviceSize -- ^ dstOffset
+                            -> VkDeviceSize -- ^ stride
+                                            -> VkQueryResultFlags -- ^ flags
+                                                                  -> IO ()
+
+type PFN_vkCmdCopyQueryPoolResults =
+     FunPtr HS_vkCmdCopyQueryPoolResults
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyQueryPoolResultsUnsafe ::
+               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyQueryPoolResultsSafe ::
+               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
+
+instance VulkanProc "vkCmdCopyQueryPoolResults" where
+        type VkProcType "vkCmdCopyQueryPoolResults" =
+             HS_vkCmdCopyQueryPoolResults
+        vkProcSymbol = _VkCmdCopyQueryPoolResults
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyQueryPoolResultsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyQueryPoolResultsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdPushConstants :: CString
+
+pattern VkCmdPushConstants <- (is_VkCmdPushConstants -> True)
+  where VkCmdPushConstants = _VkCmdPushConstants
+
+{-# INLINE _VkCmdPushConstants #-}
+
+_VkCmdPushConstants :: CString
+_VkCmdPushConstants = Ptr "vkCmdPushConstants\NUL"##
+
+{-# INLINE is_VkCmdPushConstants #-}
+
+is_VkCmdPushConstants :: CString -> Bool
+is_VkCmdPushConstants = (EQ ==) . cmpCStrings _VkCmdPushConstants
+
+type VkCmdPushConstants = "vkCmdPushConstants"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
+--           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdPushConstants"
+               vkCmdPushConstantsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+##else
+vkCmdPushConstantsUnsafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkPipelineLayout -- ^ layout
+                                            ->
+                             VkShaderStageFlags -- ^ stageFlags
+                                                -> Word32 -- ^ offset
+                                                          -> Word32 -- ^ size
+                                                                    -> Ptr Void -- ^ pValues
+                                                                                -> IO ()
+vkCmdPushConstantsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdPushConstants)
+
+{-# NOINLINE vkCmdPushConstantsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
+--           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdPushConstants"
+               vkCmdPushConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+##else
+vkCmdPushConstantsSafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkPipelineLayout -- ^ layout
+                                          ->
+                           VkShaderStageFlags -- ^ stageFlags
+                                              -> Word32 -- ^ offset
+                                                        -> Word32 -- ^ size
+                                                                  -> Ptr Void -- ^ pValues
+                                                                              -> IO ()
+vkCmdPushConstantsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPushConstants)
+
+{-# NOINLINE vkCmdPushConstantsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
+--           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
+--
+vkCmdPushConstants ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkPipelineLayout -- ^ layout
+                                      ->
+                       VkShaderStageFlags -- ^ stageFlags
+                                          -> Word32 -- ^ offset
+                                                    -> Word32 -- ^ size
+                                                              -> Ptr Void -- ^ pValues
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdPushConstants = vkCmdPushConstantsUnsafe
+##else
+vkCmdPushConstants = vkCmdPushConstantsSafe
+
+##endif
+{-# INLINE vkCmdPushConstants #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdPushConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineLayout layout
+--   >     , VkShaderStageFlags stageFlags
+--   >     , uint32_t offset
+--   >     , uint32_t size
+--   >     , const void* pValues
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+type HS_vkCmdPushConstants =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineLayout -- ^ layout
+                        ->
+         VkShaderStageFlags -- ^ stageFlags
+                            -> Word32 -- ^ offset
+                                      -> Word32 -- ^ size
+                                                -> Ptr Void -- ^ pValues
+                                                            -> IO ()
+
+type PFN_vkCmdPushConstants = FunPtr HS_vkCmdPushConstants
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdPushConstantsUnsafe ::
+               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
+
+foreign import ccall safe "dynamic" unwrapVkCmdPushConstantsSafe ::
+               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
+
+instance VulkanProc "vkCmdPushConstants" where
+        type VkProcType "vkCmdPushConstants" = HS_vkCmdPushConstants
+        vkProcSymbol = _VkCmdPushConstants
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdPushConstantsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdPushConstantsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBeginRenderPass :: CString
+
+pattern VkCmdBeginRenderPass <- (is_VkCmdBeginRenderPass -> True)
+  where VkCmdBeginRenderPass = _VkCmdBeginRenderPass
+
+{-# INLINE _VkCmdBeginRenderPass #-}
+
+_VkCmdBeginRenderPass :: CString
+_VkCmdBeginRenderPass = Ptr "vkCmdBeginRenderPass\NUL"##
+
+{-# INLINE is_VkCmdBeginRenderPass #-}
+
+is_VkCmdBeginRenderPass :: CString -> Bool
+is_VkCmdBeginRenderPass
+  = (EQ ==) . cmpCStrings _VkCmdBeginRenderPass
+
+type VkCmdBeginRenderPass = "vkCmdBeginRenderPass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
+--           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPassUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+##else
+vkCmdBeginRenderPassUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                       -> VkSubpassContents -- ^ contents
+                                                                            -> IO ()
+vkCmdBeginRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBeginRenderPass)
+
+{-# NOINLINE vkCmdBeginRenderPassUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
+--           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPassSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+##else
+vkCmdBeginRenderPassSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                     -> VkSubpassContents -- ^ contents
+                                                                          -> IO ()
+vkCmdBeginRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginRenderPass)
+
+{-# NOINLINE vkCmdBeginRenderPassSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
+--           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
+--
+vkCmdBeginRenderPass ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                 -> VkSubpassContents -- ^ contents
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBeginRenderPass = vkCmdBeginRenderPassUnsafe
+##else
+vkCmdBeginRenderPass = vkCmdBeginRenderPassSafe
+
+##endif
+{-# INLINE vkCmdBeginRenderPass #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdBeginRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkRenderPassBeginInfo* pRenderPassBegin
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+type HS_vkCmdBeginRenderPass =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                 -> VkSubpassContents -- ^ contents
+                                                      -> IO ()
+
+type PFN_vkCmdBeginRenderPass = FunPtr HS_vkCmdBeginRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBeginRenderPassUnsafe ::
+               PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCmdBeginRenderPassSafe
+               :: PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
+
+instance VulkanProc "vkCmdBeginRenderPass" where
+        type VkProcType "vkCmdBeginRenderPass" = HS_vkCmdBeginRenderPass
+        vkProcSymbol = _VkCmdBeginRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBeginRenderPassUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBeginRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdNextSubpass :: CString
+
+pattern VkCmdNextSubpass <- (is_VkCmdNextSubpass -> True)
+  where VkCmdNextSubpass = _VkCmdNextSubpass
+
+{-# INLINE _VkCmdNextSubpass #-}
+
+_VkCmdNextSubpass :: CString
+_VkCmdNextSubpass = Ptr "vkCmdNextSubpass\NUL"##
+
+{-# INLINE is_VkCmdNextSubpass #-}
+
+is_VkCmdNextSubpass :: CString -> Bool
+is_VkCmdNextSubpass = (EQ ==) . cmpCStrings _VkCmdNextSubpass
+
+type VkCmdNextSubpass = "vkCmdNextSubpass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
+--           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdNextSubpass"
+               vkCmdNextSubpassUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkSubpassContents -- ^ contents
+                                                    -> IO ()
+
+##else
+vkCmdNextSubpassUnsafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> VkSubpassContents -- ^ contents
+                                                            -> IO ()
+vkCmdNextSubpassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdNextSubpass)
+
+{-# NOINLINE vkCmdNextSubpassUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
+--           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkSubpassContents -- ^ contents
+                                                       -> IO ()
+
+##else
+vkCmdNextSubpassSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkSubpassContents -- ^ contents
+                                                          -> IO ()
+vkCmdNextSubpassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdNextSubpass)
+
+{-# NOINLINE vkCmdNextSubpassSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
+--           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
+--
+vkCmdNextSubpass :: VkCommandBuffer -- ^ commandBuffer
+                                    -> VkSubpassContents -- ^ contents
+                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdNextSubpass = vkCmdNextSubpassUnsafe
+##else
+vkCmdNextSubpass = vkCmdNextSubpassSafe
+
+##endif
+{-# INLINE vkCmdNextSubpass #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdNextSubpass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+type HS_vkCmdNextSubpass =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkSubpassContents -- ^ contents
+                                          -> IO ()
+
+type PFN_vkCmdNextSubpass = FunPtr HS_vkCmdNextSubpass
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdNextSubpassUnsafe
+               :: PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
+
+foreign import ccall safe "dynamic" unwrapVkCmdNextSubpassSafe ::
+               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
+
+instance VulkanProc "vkCmdNextSubpass" where
+        type VkProcType "vkCmdNextSubpass" = HS_vkCmdNextSubpass
+        vkProcSymbol = _VkCmdNextSubpass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdNextSubpassUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdNextSubpassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdEndRenderPass :: CString
+
+pattern VkCmdEndRenderPass <- (is_VkCmdEndRenderPass -> True)
+  where VkCmdEndRenderPass = _VkCmdEndRenderPass
+
+{-# INLINE _VkCmdEndRenderPass #-}
+
+_VkCmdEndRenderPass :: CString
+_VkCmdEndRenderPass = Ptr "vkCmdEndRenderPass\NUL"##
+
+{-# INLINE is_VkCmdEndRenderPass #-}
+
+is_VkCmdEndRenderPass :: CString -> Bool
+is_VkCmdEndRenderPass = (EQ ==) . cmpCStrings _VkCmdEndRenderPass
+
+type VkCmdEndRenderPass = "vkCmdEndRenderPass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
+--           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdEndRenderPass"
+               vkCmdEndRenderPassUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                                           -> IO ()
+
+##else
+vkCmdEndRenderPassUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                            -> IO ()
+vkCmdEndRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdEndRenderPass)
+
+{-# NOINLINE vkCmdEndRenderPassUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
+--           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdEndRenderPass"
+               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO ()
+
+##else
+vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> IO ()
+vkCmdEndRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndRenderPass)
+
+{-# NOINLINE vkCmdEndRenderPassSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
+--           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
+--
+vkCmdEndRenderPass :: VkCommandBuffer -- ^ commandBuffer
+                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdEndRenderPass = vkCmdEndRenderPassUnsafe
+##else
+vkCmdEndRenderPass = vkCmdEndRenderPassSafe
+
+##endif
+{-# INLINE vkCmdEndRenderPass #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdEndRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+type HS_vkCmdEndRenderPass = VkCommandBuffer -- ^ commandBuffer
+                                             -> IO ()
+
+type PFN_vkCmdEndRenderPass = FunPtr HS_vkCmdEndRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdEndRenderPassUnsafe ::
+               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCmdEndRenderPassSafe ::
+               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
+
+instance VulkanProc "vkCmdEndRenderPass" where
+        type VkProcType "vkCmdEndRenderPass" = HS_vkCmdEndRenderPass
+        vkProcSymbol = _VkCmdEndRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdEndRenderPassUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdEndRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdExecuteCommands :: CString
+
+pattern VkCmdExecuteCommands <- (is_VkCmdExecuteCommands -> True)
+  where VkCmdExecuteCommands = _VkCmdExecuteCommands
+
+{-# INLINE _VkCmdExecuteCommands #-}
+
+_VkCmdExecuteCommands :: CString
+_VkCmdExecuteCommands = Ptr "vkCmdExecuteCommands\NUL"##
+
+{-# INLINE is_VkCmdExecuteCommands #-}
+
+is_VkCmdExecuteCommands :: CString -> Bool
+is_VkCmdExecuteCommands
+  = (EQ ==) . cmpCStrings _VkCmdExecuteCommands
+
+type VkCmdExecuteCommands = "vkCmdExecuteCommands"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
+--           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdExecuteCommands"
+               vkCmdExecuteCommandsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+##else
+vkCmdExecuteCommandsUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Word32 -- ^ commandBufferCount
+                                                     -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                            -> IO ()
+vkCmdExecuteCommandsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdExecuteCommands)
+
+{-# NOINLINE vkCmdExecuteCommandsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
+--           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdExecuteCommands"
+               vkCmdExecuteCommandsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+##else
+vkCmdExecuteCommandsSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+vkCmdExecuteCommandsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdExecuteCommands)
+
+{-# NOINLINE vkCmdExecuteCommandsSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
+--           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
+--
+vkCmdExecuteCommands ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Word32 -- ^ commandBufferCount
+                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdExecuteCommands = vkCmdExecuteCommandsUnsafe
+##else
+vkCmdExecuteCommands = vkCmdExecuteCommandsSafe
+
+##endif
+{-# INLINE vkCmdExecuteCommands #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdExecuteCommands
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+type HS_vkCmdExecuteCommands =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ commandBufferCount
+                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                      -> IO ()
+
+type PFN_vkCmdExecuteCommands = FunPtr HS_vkCmdExecuteCommands
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdExecuteCommandsUnsafe ::
+               PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
+
+foreign import ccall safe "dynamic" unwrapVkCmdExecuteCommandsSafe
+               :: PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
+
+instance VulkanProc "vkCmdExecuteCommands" where
+        type VkProcType "vkCmdExecuteCommands" = HS_vkCmdExecuteCommands
+        vkProcSymbol = _VkCmdExecuteCommands
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdExecuteCommandsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdExecuteCommandsSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Core_1_1.hs b/src-gen/Graphics/Vulkan/Core_1_1.hs
--- a/src-gen/Graphics/Vulkan/Core_1_1.hs
+++ b/src-gen/Graphics/Vulkan/Core_1_1.hs
@@ -25,5742 +25,7169 @@
         -- ** Device Initialization
         VkEnumerateInstanceVersion, pattern VkEnumerateInstanceVersion,
         HS_vkEnumerateInstanceVersion, PFN_vkEnumerateInstanceVersion,
-        vkEnumerateInstanceVersion, vkEnumerateInstanceVersionSafe,
-        module Graphics.Vulkan.Types.Enum.Result,
-        -- ** Promoted from VK_KHR_relaxed_block_layout, which has no API
-        --
-
-        -- ** Promoted from VK_KHR_storage_buffer_storage_class, which has no API
-        --
-
-        -- ** Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
-        -- ** Promoted from VK_KHR_bind_memory2
-        module Graphics.Vulkan.Types.Struct.Bind, -- > #include "vk_platform.h"
-                                                  VkBindBufferMemory2,
-        pattern VkBindBufferMemory2, HS_vkBindBufferMemory2,
-        PFN_vkBindBufferMemory2, vkBindBufferMemory2,
-        vkBindBufferMemory2Safe, VkBindImageMemory2,
-        pattern VkBindImageMemory2, HS_vkBindImageMemory2,
-        PFN_vkBindImageMemory2, vkBindImageMemory2, vkBindImageMemory2Safe,
-        module Graphics.Vulkan.Types.Handles,
-        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
-        pattern VK_IMAGE_CREATE_ALIAS_BIT,
-        -- ** Promoted from VK_KHR_16bit_storage
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Enum.Device,
-        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
-        -- ** Promoted from VK_KHR_dedicated_allocation
-        module Graphics.Vulkan.Types.Struct.Memory,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
-        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
-        -- ** Promoted from VK_KHR_device_group
-        module Graphics.Vulkan.Types.Struct.Clear,
-        module Graphics.Vulkan.Types.Struct.Command,
-        module Graphics.Vulkan.Types.Enum.Command,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Enum.Memory,
-        module Graphics.Vulkan.Types.Struct.Offset,
-        module Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Enum.Query,
-        module Graphics.Vulkan.Types.Struct.Rect,
-        module Graphics.Vulkan.Types.Struct.RenderPass,
-        module Graphics.Vulkan.Types.Struct.Sparse,
-        module Graphics.Vulkan.Types.Enum.Sparse,
-        module Graphics.Vulkan.Types.Struct.SubmitInfo,
-        -- > #include "vk_platform.h"
-        VkGetDeviceGroupPeerMemoryFeatures,
-        pattern VkGetDeviceGroupPeerMemoryFeatures,
-        HS_vkGetDeviceGroupPeerMemoryFeatures,
-        PFN_vkGetDeviceGroupPeerMemoryFeatures,
-        vkGetDeviceGroupPeerMemoryFeatures,
-        vkGetDeviceGroupPeerMemoryFeaturesSafe, VkCmdSetDeviceMask,
-        pattern VkCmdSetDeviceMask, HS_vkCmdSetDeviceMask,
-        PFN_vkCmdSetDeviceMask, vkCmdSetDeviceMask, vkCmdSetDeviceMaskSafe,
-        VkCmdDispatchBase, pattern VkCmdDispatchBase, HS_vkCmdDispatchBase,
-        PFN_vkCmdDispatchBase, vkCmdDispatchBase, vkCmdDispatchBaseSafe,
-        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
-        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
-        pattern VK_PIPELINE_CREATE_DISPATCH_BASE,
-        pattern VK_DEPENDENCY_DEVICE_GROUP_BIT,
-        -- ** Promoted from VK_KHR_device_group + VK_KHR_bind_memory2
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
-        pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
-        -- ** Promoted from VK_KHR_device_group_creation
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        VkEnumeratePhysicalDeviceGroups,
-        pattern VkEnumeratePhysicalDeviceGroups,
-        HS_vkEnumeratePhysicalDeviceGroups,
-        PFN_vkEnumeratePhysicalDeviceGroups,
-        vkEnumeratePhysicalDeviceGroups,
-        vkEnumeratePhysicalDeviceGroupsSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
-        pattern VK_MAX_DEVICE_GROUP_SIZE,
-        pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
-        -- ** Promoted from VK_KHR_get_memory_requirements2
-        module Graphics.Vulkan.Types.Struct.Buffer,
-        -- > #include "vk_platform.h"
-        VkGetImageMemoryRequirements2,
-        pattern VkGetImageMemoryRequirements2,
-        HS_vkGetImageMemoryRequirements2,
-        PFN_vkGetImageMemoryRequirements2, vkGetImageMemoryRequirements2,
-        vkGetImageMemoryRequirements2Safe, VkGetBufferMemoryRequirements2,
-        pattern VkGetBufferMemoryRequirements2,
-        HS_vkGetBufferMemoryRequirements2,
-        PFN_vkGetBufferMemoryRequirements2, vkGetBufferMemoryRequirements2,
-        vkGetBufferMemoryRequirements2Safe,
-        VkGetImageSparseMemoryRequirements2,
-        pattern VkGetImageSparseMemoryRequirements2,
-        HS_vkGetImageSparseMemoryRequirements2,
-        PFN_vkGetImageSparseMemoryRequirements2,
-        vkGetImageSparseMemoryRequirements2,
-        vkGetImageSparseMemoryRequirements2Safe,
-        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,
-        -- ** Promoted from VK_KHR_get_physical_device_properties2
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Struct.FormatProperties,
-        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
-        module Graphics.Vulkan.Types.Enum.Queue,
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceFeatures2, pattern VkGetPhysicalDeviceFeatures2,
-        HS_vkGetPhysicalDeviceFeatures2, PFN_vkGetPhysicalDeviceFeatures2,
-        vkGetPhysicalDeviceFeatures2, vkGetPhysicalDeviceFeatures2Safe,
-        VkGetPhysicalDeviceProperties2,
-        pattern VkGetPhysicalDeviceProperties2,
-        HS_vkGetPhysicalDeviceProperties2,
-        PFN_vkGetPhysicalDeviceProperties2, vkGetPhysicalDeviceProperties2,
-        vkGetPhysicalDeviceProperties2Safe,
-        VkGetPhysicalDeviceFormatProperties2,
-        pattern VkGetPhysicalDeviceFormatProperties2,
-        HS_vkGetPhysicalDeviceFormatProperties2,
-        PFN_vkGetPhysicalDeviceFormatProperties2,
-        vkGetPhysicalDeviceFormatProperties2,
-        vkGetPhysicalDeviceFormatProperties2Safe,
-        VkGetPhysicalDeviceImageFormatProperties2,
-        pattern VkGetPhysicalDeviceImageFormatProperties2,
-        HS_vkGetPhysicalDeviceImageFormatProperties2,
-        PFN_vkGetPhysicalDeviceImageFormatProperties2,
-        vkGetPhysicalDeviceImageFormatProperties2,
-        vkGetPhysicalDeviceImageFormatProperties2Safe,
-        VkGetPhysicalDeviceQueueFamilyProperties2,
-        pattern VkGetPhysicalDeviceQueueFamilyProperties2,
-        HS_vkGetPhysicalDeviceQueueFamilyProperties2,
-        PFN_vkGetPhysicalDeviceQueueFamilyProperties2,
-        vkGetPhysicalDeviceQueueFamilyProperties2,
-        vkGetPhysicalDeviceQueueFamilyProperties2Safe,
-        VkGetPhysicalDeviceMemoryProperties2,
-        pattern VkGetPhysicalDeviceMemoryProperties2,
-        HS_vkGetPhysicalDeviceMemoryProperties2,
-        PFN_vkGetPhysicalDeviceMemoryProperties2,
-        vkGetPhysicalDeviceMemoryProperties2,
-        vkGetPhysicalDeviceMemoryProperties2Safe,
-        VkGetPhysicalDeviceSparseImageFormatProperties2,
-        pattern VkGetPhysicalDeviceSparseImageFormatProperties2,
-        HS_vkGetPhysicalDeviceSparseImageFormatProperties2,
-        PFN_vkGetPhysicalDeviceSparseImageFormatProperties2,
-        vkGetPhysicalDeviceSparseImageFormatProperties2,
-        vkGetPhysicalDeviceSparseImageFormatProperties2Safe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
-        pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
-        -- ** Promoted from VK_KHR_maintenance1
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        VkTrimCommandPool, pattern VkTrimCommandPool, HS_vkTrimCommandPool,
-        PFN_vkTrimCommandPool, vkTrimCommandPool, vkTrimCommandPoolSafe,
-        pattern VK_ERROR_OUT_OF_POOL_MEMORY,
-        pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
-        pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
-        pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
-        -- ** Promoted from VK_KHR_maintenance2
-        module Graphics.Vulkan.Types.Enum.AccessFlags,
-        module Graphics.Vulkan.Types.Struct.Attachment,
-        module Graphics.Vulkan.Types.Enum.Attachment,
-        module Graphics.Vulkan.Types.Struct.ComponentMapping,
-        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
-        module Graphics.Vulkan.Types.Enum.DependencyFlags,
-        module Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference,
-        module Graphics.Vulkan.Types.Struct.Pipeline,
-        module Graphics.Vulkan.Types.Enum.PointClippingBehavior,
-        module Graphics.Vulkan.Types.Struct.Subpass,
-        module Graphics.Vulkan.Types.Enum.Subpass,
-        module Graphics.Vulkan.Types.Enum.TessellationDomainOrigin,
-        -- > #include "vk_platform.h"
-        pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
-        pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
-        pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
-        pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
-        -- ** Promoted from VK_KHR_multiview
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
-        pattern VK_DEPENDENCY_VIEW_LOCAL_BIT,
-        -- ** Promoted from VK_KHR_variable_pointers
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
-        -- ** Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they weren't actually promoted from an extension.
-        module Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo,
-        -- > #include "vk_platform.h"
-        VkGetDeviceQueue2, pattern VkGetDeviceQueue2, HS_vkGetDeviceQueue2,
-        PFN_vkGetDeviceQueue2, vkGetDeviceQueue2, vkGetDeviceQueue2Safe,
-        pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,
-        pattern VK_QUEUE_PROTECTED_BIT,
-        pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,
-        pattern VK_MEMORY_PROPERTY_PROTECTED_BIT,
-        pattern VK_BUFFER_CREATE_PROTECTED_BIT,
-        pattern VK_IMAGE_CREATE_PROTECTED_BIT,
-        pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT,
-        -- ** Promoted from VK_KHR_sampler_ycbcr_conversion
-        module Graphics.Vulkan.Types.Enum.BorderColor,
-        module Graphics.Vulkan.Types.Enum.ChromaLocation,
-        module Graphics.Vulkan.Types.Enum.CompareOp,
-        module Graphics.Vulkan.Types.Enum.Filter,
-        module Graphics.Vulkan.Types.Enum.Sampler,
-        module Graphics.Vulkan.Types.Struct.Sampler,
-        -- > #include "vk_platform.h"
-        VkCreateSamplerYcbcrConversion,
-        pattern VkCreateSamplerYcbcrConversion,
-        HS_vkCreateSamplerYcbcrConversion,
-        PFN_vkCreateSamplerYcbcrConversion, vkCreateSamplerYcbcrConversion,
-        vkCreateSamplerYcbcrConversionSafe,
-        VkDestroySamplerYcbcrConversion,
-        pattern VkDestroySamplerYcbcrConversion,
-        HS_vkDestroySamplerYcbcrConversion,
-        PFN_vkDestroySamplerYcbcrConversion,
-        vkDestroySamplerYcbcrConversion,
-        vkDestroySamplerYcbcrConversionSafe,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_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_IMAGE_FORMAT_PROPERTIES,
-        pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
-        pattern VK_FORMAT_G8B8G8R8_422_UNORM,
-        pattern VK_FORMAT_B8G8R8G8_422_UNORM,
-        pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
-        pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
-        pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
-        pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
-        pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
-        pattern VK_FORMAT_R10X6_UNORM_PACK16,
-        pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
-        pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
-        pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
-        pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
-        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
-        pattern VK_FORMAT_R12X4_UNORM_PACK16,
-        pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
-        pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
-        pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
-        pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
-        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
-        pattern VK_FORMAT_G16B16G16R16_422_UNORM,
-        pattern VK_FORMAT_B16G16R16G16_422_UNORM,
-        pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
-        pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
-        pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
-        pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
-        pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
-        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_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
-        pattern VK_FORMAT_FEATURE_DISJOINT_BIT,
-        pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
-        -- ** Promoted from VK_KHR_descriptor_update_template
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        -- > #include "vk_platform.h"
-        VkCreateDescriptorUpdateTemplate,
-        pattern VkCreateDescriptorUpdateTemplate,
-        HS_vkCreateDescriptorUpdateTemplate,
-        PFN_vkCreateDescriptorUpdateTemplate,
-        vkCreateDescriptorUpdateTemplate,
-        vkCreateDescriptorUpdateTemplateSafe,
-        VkDestroyDescriptorUpdateTemplate,
-        pattern VkDestroyDescriptorUpdateTemplate,
-        HS_vkDestroyDescriptorUpdateTemplate,
-        PFN_vkDestroyDescriptorUpdateTemplate,
-        vkDestroyDescriptorUpdateTemplate,
-        vkDestroyDescriptorUpdateTemplateSafe,
-        VkUpdateDescriptorSetWithTemplate,
-        pattern VkUpdateDescriptorSetWithTemplate,
-        HS_vkUpdateDescriptorSetWithTemplate,
-        PFN_vkUpdateDescriptorSetWithTemplate,
-        vkUpdateDescriptorSetWithTemplate,
-        vkUpdateDescriptorSetWithTemplateSafe,
-        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
-        pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
-        -- ** Promoted from VK_KHR_external_memory_capabilities
-        module Graphics.Vulkan.Types.Enum.Buffer,
-        module Graphics.Vulkan.Types.Struct.External,
-        module Graphics.Vulkan.Types.Enum.External,
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceExternalBufferProperties,
-        pattern VkGetPhysicalDeviceExternalBufferProperties,
-        HS_vkGetPhysicalDeviceExternalBufferProperties,
-        PFN_vkGetPhysicalDeviceExternalBufferProperties,
-        vkGetPhysicalDeviceExternalBufferProperties,
-        vkGetPhysicalDeviceExternalBufferPropertiesSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
-        pattern VK_LUID_SIZE, -- ** Promoted from VK_KHR_external_memory
-                              module Graphics.Vulkan.Types.Struct.Export,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
-        pattern VK_ERROR_INVALID_EXTERNAL_HANDLE,
-        pattern VK_QUEUE_FAMILY_EXTERNAL,
-        -- ** Promoted from VK_KHR_external_fence_capabilities
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceExternalFenceProperties,
-        pattern VkGetPhysicalDeviceExternalFenceProperties,
-        HS_vkGetPhysicalDeviceExternalFenceProperties,
-        PFN_vkGetPhysicalDeviceExternalFenceProperties,
-        vkGetPhysicalDeviceExternalFenceProperties,
-        vkGetPhysicalDeviceExternalFencePropertiesSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
-        -- ** Promoted from VK_KHR_external_fence
-        module Graphics.Vulkan.Types.Enum.Fence,
-        module Graphics.Vulkan.Types.Struct.Fence,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
-        -- ** Promoted from VK_KHR_external_semaphore
-        module Graphics.Vulkan.Types.Struct.Semaphore,
-        module Graphics.Vulkan.Types.Enum.SemaphoreImportFlag,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
-        -- ** Promoted from VK_KHR_external_semaphore_capabilities
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceExternalSemaphoreProperties,
-        pattern VkGetPhysicalDeviceExternalSemaphoreProperties,
-        HS_vkGetPhysicalDeviceExternalSemaphoreProperties,
-        PFN_vkGetPhysicalDeviceExternalSemaphoreProperties,
-        vkGetPhysicalDeviceExternalSemaphoreProperties,
-        vkGetPhysicalDeviceExternalSemaphorePropertiesSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
-        -- ** Promoted from VK_KHR_maintenance3
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        VkGetDescriptorSetLayoutSupport,
-        pattern VkGetDescriptorSetLayoutSupport,
-        HS_vkGetDescriptorSetLayoutSupport,
-        PFN_vkGetDescriptorSetLayoutSupport,
-        vkGetDescriptorSetLayoutSupport,
-        vkGetDescriptorSetLayoutSupportSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
-        -- ** Promoted from VK_KHR_shader_draw_parameters, with a feature support query added
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES)
-       where
-import           GHC.Ptr                                                     (Ptr (..))
-import           Graphics.Vulkan.Constants                                   (pattern VK_LUID_SIZE,
-                                                                              pattern VK_MAX_DEVICE_GROUP_SIZE,
-                                                                              pattern VK_QUEUE_FAMILY_EXTERNAL)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Proc
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.AccessFlags
-import           Graphics.Vulkan.Types.Enum.Attachment
-import           Graphics.Vulkan.Types.Enum.BorderColor
-import           Graphics.Vulkan.Types.Enum.Buffer
-import           Graphics.Vulkan.Types.Enum.ChromaLocation
-import           Graphics.Vulkan.Types.Enum.Command
-import           Graphics.Vulkan.Types.Enum.CompareOp
-import           Graphics.Vulkan.Types.Enum.ComponentSwizzle
-import           Graphics.Vulkan.Types.Enum.DependencyFlags
-import           Graphics.Vulkan.Types.Enum.Descriptor
-import           Graphics.Vulkan.Types.Enum.Device
-import           Graphics.Vulkan.Types.Enum.External
-import           Graphics.Vulkan.Types.Enum.Fence
-import           Graphics.Vulkan.Types.Enum.Filter
-import           Graphics.Vulkan.Types.Enum.Format
-import           Graphics.Vulkan.Types.Enum.Image
-import           Graphics.Vulkan.Types.Enum.InternalAllocationType
-import           Graphics.Vulkan.Types.Enum.Memory
-import           Graphics.Vulkan.Types.Enum.Object                           (VkObjectType (..))
-import           Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag
-import           Graphics.Vulkan.Types.Enum.PhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.Pipeline
-import           Graphics.Vulkan.Types.Enum.PointClippingBehavior
-import           Graphics.Vulkan.Types.Enum.Query
-import           Graphics.Vulkan.Types.Enum.Queue
-import           Graphics.Vulkan.Types.Enum.Result
-import           Graphics.Vulkan.Types.Enum.SampleCountFlags
-import           Graphics.Vulkan.Types.Enum.Sampler
-import           Graphics.Vulkan.Types.Enum.SemaphoreImportFlag
-import           Graphics.Vulkan.Types.Enum.Shader
-import           Graphics.Vulkan.Types.Enum.SharingMode
-import           Graphics.Vulkan.Types.Enum.Sparse
-import           Graphics.Vulkan.Types.Enum.StructureType
-import           Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags
-import           Graphics.Vulkan.Types.Enum.Subpass
-import           Graphics.Vulkan.Types.Enum.SystemAllocationScope
-import           Graphics.Vulkan.Types.Enum.TessellationDomainOrigin
-import           Graphics.Vulkan.Types.Funcpointers
-import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Struct.AllocationCallbacks
-import           Graphics.Vulkan.Types.Struct.Attachment
-import           Graphics.Vulkan.Types.Struct.Bind
-import           Graphics.Vulkan.Types.Struct.Buffer
-import           Graphics.Vulkan.Types.Struct.Clear
-import           Graphics.Vulkan.Types.Struct.Command
-import           Graphics.Vulkan.Types.Struct.ComponentMapping
-import           Graphics.Vulkan.Types.Struct.Descriptor
-import           Graphics.Vulkan.Types.Struct.Device
-import           Graphics.Vulkan.Types.Struct.Export
-import           Graphics.Vulkan.Types.Struct.Extent
-import           Graphics.Vulkan.Types.Struct.External
-import           Graphics.Vulkan.Types.Struct.Fence
-import           Graphics.Vulkan.Types.Struct.FormatProperties
-import           Graphics.Vulkan.Types.Struct.Image
-import           Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference
-import           Graphics.Vulkan.Types.Struct.Memory
-import           Graphics.Vulkan.Types.Struct.Offset
-import           Graphics.Vulkan.Types.Struct.PhysicalDevice
-import           Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.Pipeline
-import           Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo
-import           Graphics.Vulkan.Types.Struct.QueueFamilyProperties
-import           Graphics.Vulkan.Types.Struct.Rect
-import           Graphics.Vulkan.Types.Struct.RenderPass
-import           Graphics.Vulkan.Types.Struct.Sampler
-import           Graphics.Vulkan.Types.Struct.Semaphore
-import           Graphics.Vulkan.Types.Struct.Sparse
-import           Graphics.Vulkan.Types.Struct.SubmitInfo
-import           Graphics.Vulkan.Types.Struct.Subpass
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
-pattern VkEnumerateInstanceVersion :: CString
-
-pattern VkEnumerateInstanceVersion <-
-        (is_VkEnumerateInstanceVersion -> True)
-  where VkEnumerateInstanceVersion = _VkEnumerateInstanceVersion
-
-{-# INLINE _VkEnumerateInstanceVersion #-}
-
-_VkEnumerateInstanceVersion :: CString
-_VkEnumerateInstanceVersion = Ptr "vkEnumerateInstanceVersion\NUL"#
-
-{-# INLINE is_VkEnumerateInstanceVersion #-}
-
-is_VkEnumerateInstanceVersion :: CString -> Bool
-is_VkEnumerateInstanceVersion
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceVersion
-
-type VkEnumerateInstanceVersion = "vkEnumerateInstanceVersion"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkEnumerateInstanceVersion"
-               vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
-                                                        -> IO VkResult
-
-#else
-vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
-                                         -> IO VkResult
-vkEnumerateInstanceVersion
-  = unsafeDupablePerformIO (vkGetProc @VkEnumerateInstanceVersion)
-
-{-# NOINLINE vkEnumerateInstanceVersion #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkEnumerateInstanceVersion"
-               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
-                                                            -> IO VkResult
-
-#else
-vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
-                                             -> IO VkResult
-vkEnumerateInstanceVersionSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateInstanceVersion)
-
-{-# NOINLINE vkEnumerateInstanceVersionSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   > VkResult vkEnumerateInstanceVersion
---   >     ( uint32_t* pApiVersion
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
-type HS_vkEnumerateInstanceVersion = Ptr Word32 -- ^ pApiVersion
-                                                -> IO VkResult
-
-type PFN_vkEnumerateInstanceVersion =
-     FunPtr HS_vkEnumerateInstanceVersion
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateInstanceVersion ::
-               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateInstanceVersionSafe ::
-               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
-
-instance VulkanProc "vkEnumerateInstanceVersion" where
-        type VkProcType "vkEnumerateInstanceVersion" =
-             HS_vkEnumerateInstanceVersion
-        vkProcSymbol = _VkEnumerateInstanceVersion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateInstanceVersion
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceVersionSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
-        VkStructureType 1000094000
-
-pattern VkBindBufferMemory2 :: CString
-
-pattern VkBindBufferMemory2 <- (is_VkBindBufferMemory2 -> True)
-  where VkBindBufferMemory2 = _VkBindBufferMemory2
-
-{-# INLINE _VkBindBufferMemory2 #-}
-
-_VkBindBufferMemory2 :: CString
-_VkBindBufferMemory2 = Ptr "vkBindBufferMemory2\NUL"#
-
-{-# INLINE is_VkBindBufferMemory2 #-}
-
-is_VkBindBufferMemory2 :: CString -> Bool
-is_VkBindBufferMemory2 = (EQ ==) . cmpCStrings _VkBindBufferMemory2
-
-type VkBindBufferMemory2 = "vkBindBufferMemory2"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkBindBufferMemory2"
-               vkBindBufferMemory2 ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                -> IO VkResult
-
-#else
-vkBindBufferMemory2 ::
-                    VkDevice -- ^ device
-                             -> Word32 -- ^ bindInfoCount
-                                       -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                     -> IO VkResult
-vkBindBufferMemory2
-  = unsafeDupablePerformIO (vkGetProc @VkBindBufferMemory2)
-
-{-# NOINLINE vkBindBufferMemory2 #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkBindBufferMemory2"
-               vkBindBufferMemory2Safe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                -> IO VkResult
-
-#else
-vkBindBufferMemory2Safe ::
-                        VkDevice -- ^ device
-                                 -> Word32 -- ^ bindInfoCount
-                                           -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                         -> IO VkResult
-vkBindBufferMemory2Safe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory2)
-
-{-# NOINLINE vkBindBufferMemory2Safe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindBufferMemory2
---   >     ( VkDevice device
---   >     , uint32_t bindInfoCount
---   >     , const VkBindBufferMemoryInfo* pBindInfos
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
-type HS_vkBindBufferMemory2 =
-     VkDevice -- ^ device
-              -> Word32 -- ^ bindInfoCount
-                        -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                      -> IO VkResult
-
-type PFN_vkBindBufferMemory2 = FunPtr HS_vkBindBufferMemory2
-
-foreign import ccall unsafe "dynamic" unwrapVkBindBufferMemory2 ::
-               PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
-
-foreign import ccall safe "dynamic" unwrapVkBindBufferMemory2Safe
-               :: PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
-
-instance VulkanProc "vkBindBufferMemory2" where
-        type VkProcType "vkBindBufferMemory2" = HS_vkBindBufferMemory2
-        vkProcSymbol = _VkBindBufferMemory2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindBufferMemory2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBindImageMemory2 :: CString
-
-pattern VkBindImageMemory2 <- (is_VkBindImageMemory2 -> True)
-  where VkBindImageMemory2 = _VkBindImageMemory2
-
-{-# INLINE _VkBindImageMemory2 #-}
-
-_VkBindImageMemory2 :: CString
-_VkBindImageMemory2 = Ptr "vkBindImageMemory2\NUL"#
-
-{-# INLINE is_VkBindImageMemory2 #-}
-
-is_VkBindImageMemory2 :: CString -> Bool
-is_VkBindImageMemory2 = (EQ ==) . cmpCStrings _VkBindImageMemory2
-
-type VkBindImageMemory2 = "vkBindImageMemory2"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkBindImageMemory2" vkBindImageMemory2
-               :: VkDevice -- ^ device
-                           -> Word32 -- ^ bindInfoCount
-                                     -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                  -> IO VkResult
-
-#else
-vkBindImageMemory2 ::
-                   VkDevice -- ^ device
-                            -> Word32 -- ^ bindInfoCount
-                                      -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                   -> IO VkResult
-vkBindImageMemory2
-  = unsafeDupablePerformIO (vkGetProc @VkBindImageMemory2)
-
-{-# NOINLINE vkBindImageMemory2 #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkBindImageMemory2"
-               vkBindImageMemory2Safe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                               -> IO VkResult
-
-#else
-vkBindImageMemory2Safe ::
-                       VkDevice -- ^ device
-                                -> Word32 -- ^ bindInfoCount
-                                          -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                       -> IO VkResult
-vkBindImageMemory2Safe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory2)
-
-{-# NOINLINE vkBindImageMemory2Safe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindImageMemory2
---   >     ( VkDevice device
---   >     , uint32_t bindInfoCount
---   >     , const VkBindImageMemoryInfo* pBindInfos
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
-type HS_vkBindImageMemory2 =
-     VkDevice -- ^ device
-              -> Word32 -- ^ bindInfoCount
-                        -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                     -> IO VkResult
-
-type PFN_vkBindImageMemory2 = FunPtr HS_vkBindImageMemory2
-
-foreign import ccall unsafe "dynamic" unwrapVkBindImageMemory2 ::
-               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
-
-foreign import ccall safe "dynamic" unwrapVkBindImageMemory2Safe ::
-               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
-
-instance VulkanProc "vkBindImageMemory2" where
-        type VkProcType "vkBindImageMemory2" = HS_vkBindImageMemory2
-        vkProcSymbol = _VkBindImageMemory2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindImageMemory2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkBindImageMemory2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO =
-        VkStructureType 1000157000
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO =
-        VkStructureType 1000157001
-
--- | bitpos = @10@
-pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 1024
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES =
-        VkStructureType 1000083000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS =
-        VkStructureType 1000127000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO =
-        VkStructureType 1000127001
-
-pattern VkGetDeviceGroupPeerMemoryFeatures :: CString
-
-pattern VkGetDeviceGroupPeerMemoryFeatures <-
-        (is_VkGetDeviceGroupPeerMemoryFeatures -> True)
-  where VkGetDeviceGroupPeerMemoryFeatures
-          = _VkGetDeviceGroupPeerMemoryFeatures
-
-{-# INLINE _VkGetDeviceGroupPeerMemoryFeatures #-}
-
-_VkGetDeviceGroupPeerMemoryFeatures :: CString
-_VkGetDeviceGroupPeerMemoryFeatures
-  = Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#
-
-{-# INLINE is_VkGetDeviceGroupPeerMemoryFeatures #-}
-
-is_VkGetDeviceGroupPeerMemoryFeatures :: CString -> Bool
-is_VkGetDeviceGroupPeerMemoryFeatures
-  = (EQ ==) . cmpCStrings _VkGetDeviceGroupPeerMemoryFeatures
-
-type VkGetDeviceGroupPeerMemoryFeatures =
-     "vkGetDeviceGroupPeerMemoryFeatures"
-
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
-               vkGetDeviceGroupPeerMemoryFeatures ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        -> Word32 -- ^ localDeviceIndex
-                                  -> Word32 -- ^ remoteDeviceIndex
-                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                            -> IO ()
-
-#else
-vkGetDeviceGroupPeerMemoryFeatures ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Word32 -- ^ heapIndex
-                                            ->
-                                       Word32 -- ^ localDeviceIndex
-                                              -> Word32 -- ^ remoteDeviceIndex
-                                                        -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                        -> IO ()
-vkGetDeviceGroupPeerMemoryFeatures
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetDeviceGroupPeerMemoryFeatures)
-
-{-# NOINLINE vkGetDeviceGroupPeerMemoryFeatures #-}
-#endif
-
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
-               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        -> Word32 -- ^ localDeviceIndex
-                                  -> Word32 -- ^ remoteDeviceIndex
-                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                            -> IO ()
-
-#else
-vkGetDeviceGroupPeerMemoryFeaturesSafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         Word32 -- ^ heapIndex
-                                                ->
-                                           Word32 -- ^ localDeviceIndex
-                                                  -> Word32 -- ^ remoteDeviceIndex
-                                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                            -> IO ()
-vkGetDeviceGroupPeerMemoryFeaturesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetDeviceGroupPeerMemoryFeatures)
-
-{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesSafe #-}
-#endif
-
--- | > void vkGetDeviceGroupPeerMemoryFeatures
---   >     ( VkDevice device
---   >     , uint32_t heapIndex
---   >     , uint32_t localDeviceIndex
---   >     , uint32_t remoteDeviceIndex
---   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
-type HS_vkGetDeviceGroupPeerMemoryFeatures =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ heapIndex
-              -> Word32 -- ^ localDeviceIndex
-                        -> Word32 -- ^ remoteDeviceIndex
-                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                  -> IO ()
-
-type PFN_vkGetDeviceGroupPeerMemoryFeatures =
-     FunPtr HS_vkGetDeviceGroupPeerMemoryFeatures
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceGroupPeerMemoryFeatures ::
-               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
-                 HS_vkGetDeviceGroupPeerMemoryFeatures
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe ::
-               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
-                 HS_vkGetDeviceGroupPeerMemoryFeatures
-
-instance VulkanProc "vkGetDeviceGroupPeerMemoryFeatures" where
-        type VkProcType "vkGetDeviceGroupPeerMemoryFeatures" =
-             HS_vkGetDeviceGroupPeerMemoryFeatures
-        vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeatures
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceGroupPeerMemoryFeatures
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetDeviceMask :: CString
-
-pattern VkCmdSetDeviceMask <- (is_VkCmdSetDeviceMask -> True)
-  where VkCmdSetDeviceMask = _VkCmdSetDeviceMask
-
-{-# INLINE _VkCmdSetDeviceMask #-}
-
-_VkCmdSetDeviceMask :: CString
-_VkCmdSetDeviceMask = Ptr "vkCmdSetDeviceMask\NUL"#
-
-{-# INLINE is_VkCmdSetDeviceMask #-}
-
-is_VkCmdSetDeviceMask :: CString -> Bool
-is_VkCmdSetDeviceMask = (EQ ==) . cmpCStrings _VkCmdSetDeviceMask
-
-type VkCmdSetDeviceMask = "vkCmdSetDeviceMask"
-
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCmdSetDeviceMask" vkCmdSetDeviceMask
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ deviceMask
-                                            -> IO ()
-
-#else
-vkCmdSetDeviceMask :: VkCommandBuffer -- ^ commandBuffer
-                                      -> Word32 -- ^ deviceMask
-                                                -> IO ()
-vkCmdSetDeviceMask
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDeviceMask)
-
-{-# NOINLINE vkCmdSetDeviceMask #-}
-#endif
-
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCmdSetDeviceMask"
-               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> Word32 -- ^ deviceMask
-                                                                   -> IO ()
-
-#else
-vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> Word32 -- ^ deviceMask
-                                                    -> IO ()
-vkCmdSetDeviceMaskSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDeviceMask)
-
-{-# NOINLINE vkCmdSetDeviceMaskSafe #-}
-#endif
-
--- | Queues: 'graphics', 'compute', 'transfer'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDeviceMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t deviceMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
-type HS_vkCmdSetDeviceMask = VkCommandBuffer -- ^ commandBuffer
-                                             -> Word32 -- ^ deviceMask
-                                                       -> IO ()
-
-type PFN_vkCmdSetDeviceMask = FunPtr HS_vkCmdSetDeviceMask
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetDeviceMask ::
-               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskSafe ::
-               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
-
-instance VulkanProc "vkCmdSetDeviceMask" where
-        type VkProcType "vkCmdSetDeviceMask" = HS_vkCmdSetDeviceMask
-        vkProcSymbol = _VkCmdSetDeviceMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDeviceMask
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDispatchBase :: CString
-
-pattern VkCmdDispatchBase <- (is_VkCmdDispatchBase -> True)
-  where VkCmdDispatchBase = _VkCmdDispatchBase
-
-{-# INLINE _VkCmdDispatchBase #-}
-
-_VkCmdDispatchBase :: CString
-_VkCmdDispatchBase = Ptr "vkCmdDispatchBase\NUL"#
-
-{-# INLINE is_VkCmdDispatchBase #-}
-
-is_VkCmdDispatchBase :: CString -> Bool
-is_VkCmdDispatchBase = (EQ ==) . cmpCStrings _VkCmdDispatchBase
-
-type VkCmdDispatchBase = "vkCmdDispatchBase"
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCmdDispatchBase" vkCmdDispatchBase
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-#else
-vkCmdDispatchBase ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    Word32 -- ^ baseGroupX
-                           -> Word32 -- ^ baseGroupY
-                                     -> Word32 -- ^ baseGroupZ
-                                               -> Word32 -- ^ groupCountX
-                                                         -> Word32 -- ^ groupCountY
-                                                                   -> Word32 -- ^ groupCountZ
-                                                                             -> IO ()
-vkCmdDispatchBase
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDispatchBase)
-
-{-# NOINLINE vkCmdDispatchBase #-}
-#endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-#else
-vkCmdDispatchBaseSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ baseGroupX
-                               -> Word32 -- ^ baseGroupY
-                                         -> Word32 -- ^ baseGroupZ
-                                                   -> Word32 -- ^ groupCountX
-                                                             -> Word32 -- ^ groupCountY
-                                                                       -> Word32 -- ^ groupCountZ
-                                                                                 -> IO ()
-vkCmdDispatchBaseSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchBase)
-
-{-# NOINLINE vkCmdDispatchBaseSafe #-}
-#endif
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdDispatchBase
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t baseGroupX
---   >     , uint32_t baseGroupY
---   >     , uint32_t baseGroupZ
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
-type HS_vkCmdDispatchBase =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ baseGroupX
-              -> Word32 -- ^ baseGroupY
-                        -> Word32 -- ^ baseGroupZ
-                                  -> Word32 -- ^ groupCountX
-                                            -> Word32 -- ^ groupCountY
-                                                      -> Word32 -- ^ groupCountZ
-                                                                -> IO ()
-
-type PFN_vkCmdDispatchBase = FunPtr HS_vkCmdDispatchBase
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBase ::
-               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
-
-foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseSafe ::
-               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
-
-instance VulkanProc "vkCmdDispatchBase" where
-        type VkProcType "vkCmdDispatchBase" = HS_vkCmdDispatchBase
-        vkProcSymbol = _VkCmdDispatchBase
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatchBase
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO =
-        VkStructureType 1000060000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO =
-        VkStructureType 1000060003
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO =
-        VkStructureType 1000060004
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO =
-        VkStructureType 1000060005
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO =
-        VkStructureType 1000060006
-
--- | bitpos = @3@
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ::
-        VkPipelineCreateFlagBits
-
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
-        VkPipelineCreateFlagBits 8
-
--- | bitpos = @4@
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
-        VkPipelineCreateFlagBits
-
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
-        VkPipelineCreateFlagBits 16
-
--- | Dependency is across devices
---
---   bitpos = @2@
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits
-
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 4
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO =
-        VkStructureType 1000060013
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO =
-        VkStructureType 1000060014
-
--- | Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image
---
---   bitpos = @6@
-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ::
-        VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
-        VkImageCreateFlagBits 64
-
-pattern VkEnumeratePhysicalDeviceGroups :: CString
-
-pattern VkEnumeratePhysicalDeviceGroups <-
-        (is_VkEnumeratePhysicalDeviceGroups -> True)
-  where VkEnumeratePhysicalDeviceGroups
-          = _VkEnumeratePhysicalDeviceGroups
-
-{-# INLINE _VkEnumeratePhysicalDeviceGroups #-}
-
-_VkEnumeratePhysicalDeviceGroups :: CString
-_VkEnumeratePhysicalDeviceGroups
-  = Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#
-
-{-# INLINE is_VkEnumeratePhysicalDeviceGroups #-}
-
-is_VkEnumeratePhysicalDeviceGroups :: CString -> Bool
-is_VkEnumeratePhysicalDeviceGroups
-  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDeviceGroups
-
-type VkEnumeratePhysicalDeviceGroups =
-     "vkEnumeratePhysicalDeviceGroups"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
-               vkEnumeratePhysicalDeviceGroups ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                   -> IO VkResult
-
-#else
-vkEnumeratePhysicalDeviceGroups ::
-                                VkInstance -- ^ instance
-                                           ->
-                                  Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                             -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                                    -> IO VkResult
-vkEnumeratePhysicalDeviceGroups
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumeratePhysicalDeviceGroups)
-
-{-# NOINLINE vkEnumeratePhysicalDeviceGroups #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
-               vkEnumeratePhysicalDeviceGroupsSafe ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                   -> IO VkResult
-
-#else
-vkEnumeratePhysicalDeviceGroupsSafe ::
-                                    VkInstance -- ^ instance
-                                               ->
-                                      Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                                 ->
-                                        Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                            -> IO VkResult
-vkEnumeratePhysicalDeviceGroupsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumeratePhysicalDeviceGroups)
-
-{-# NOINLINE vkEnumeratePhysicalDeviceGroupsSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
---   > VkResult vkEnumeratePhysicalDeviceGroups
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceGroupCount
---   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
-type HS_vkEnumeratePhysicalDeviceGroups =
-     VkInstance -- ^ instance
-                ->
-       Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                  -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                         -> IO VkResult
-
-type PFN_vkEnumeratePhysicalDeviceGroups =
-     FunPtr HS_vkEnumeratePhysicalDeviceGroups
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumeratePhysicalDeviceGroups ::
-               PFN_vkEnumeratePhysicalDeviceGroups ->
-                 HS_vkEnumeratePhysicalDeviceGroups
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumeratePhysicalDeviceGroupsSafe ::
-               PFN_vkEnumeratePhysicalDeviceGroups ->
-                 HS_vkEnumeratePhysicalDeviceGroups
-
-instance VulkanProc "vkEnumeratePhysicalDeviceGroups" where
-        type VkProcType "vkEnumeratePhysicalDeviceGroups" =
-             HS_vkEnumeratePhysicalDeviceGroups
-        vkProcSymbol = _VkEnumeratePhysicalDeviceGroups
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDeviceGroups
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES =
-        VkStructureType 1000070000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO =
-        VkStructureType 1000070001
-
--- | If set, heap allocations allocate multiple instances by default
---
---   bitpos = @1@
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapFlagBits
-
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 2
-
-pattern VkGetImageMemoryRequirements2 :: CString
-
-pattern VkGetImageMemoryRequirements2 <-
-        (is_VkGetImageMemoryRequirements2 -> True)
-  where VkGetImageMemoryRequirements2
-          = _VkGetImageMemoryRequirements2
-
-{-# INLINE _VkGetImageMemoryRequirements2 #-}
-
-_VkGetImageMemoryRequirements2 :: CString
-_VkGetImageMemoryRequirements2
-  = Ptr "vkGetImageMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetImageMemoryRequirements2 #-}
-
-is_VkGetImageMemoryRequirements2 :: CString -> Bool
-is_VkGetImageMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements2
-
-type VkGetImageMemoryRequirements2 =
-     "vkGetImageMemoryRequirements2"
-
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetImageMemoryRequirements2"
-               vkGetImageMemoryRequirements2 ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                    ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetImageMemoryRequirements2 ::
-                              VkDevice -- ^ device
-                                       ->
-                                Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                   ->
-                                  Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                            -> IO ()
-vkGetImageMemoryRequirements2
-  = unsafeDupablePerformIO (vkGetProc @VkGetImageMemoryRequirements2)
-
-{-# NOINLINE vkGetImageMemoryRequirements2 #-}
-#endif
-
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetImageMemoryRequirements2"
-               vkGetImageMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                    ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetImageMemoryRequirements2Safe ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                       ->
-                                      Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                -> IO ()
-vkGetImageMemoryRequirements2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageMemoryRequirements2)
-
-{-# NOINLINE vkGetImageMemoryRequirements2Safe #-}
-#endif
-
--- | > void vkGetImageMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkImageMemoryRequirementsInfo2* pInfo
---   >     , VkMemoryRequirements2* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetImageMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                          ->
-         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                   -> IO ()
-
-type PFN_vkGetImageMemoryRequirements2 =
-     FunPtr HS_vkGetImageMemoryRequirements2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageMemoryRequirements2 ::
-               PFN_vkGetImageMemoryRequirements2 ->
-                 HS_vkGetImageMemoryRequirements2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageMemoryRequirements2Safe ::
-               PFN_vkGetImageMemoryRequirements2 ->
-                 HS_vkGetImageMemoryRequirements2
-
-instance VulkanProc "vkGetImageMemoryRequirements2" where
-        type VkProcType "vkGetImageMemoryRequirements2" =
-             HS_vkGetImageMemoryRequirements2
-        vkProcSymbol = _VkGetImageMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetBufferMemoryRequirements2 :: CString
-
-pattern VkGetBufferMemoryRequirements2 <-
-        (is_VkGetBufferMemoryRequirements2 -> True)
-  where VkGetBufferMemoryRequirements2
-          = _VkGetBufferMemoryRequirements2
-
-{-# INLINE _VkGetBufferMemoryRequirements2 #-}
-
-_VkGetBufferMemoryRequirements2 :: CString
-_VkGetBufferMemoryRequirements2
-  = Ptr "vkGetBufferMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetBufferMemoryRequirements2 #-}
-
-is_VkGetBufferMemoryRequirements2 :: CString -> Bool
-is_VkGetBufferMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements2
-
-type VkGetBufferMemoryRequirements2 =
-     "vkGetBufferMemoryRequirements2"
-
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
-               vkGetBufferMemoryRequirements2 ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                     ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetBufferMemoryRequirements2 ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                     ->
-                                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                             -> IO ()
-vkGetBufferMemoryRequirements2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetBufferMemoryRequirements2)
-
-{-# NOINLINE vkGetBufferMemoryRequirements2 #-}
-#endif
-
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetBufferMemoryRequirements2"
-               vkGetBufferMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                     ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetBufferMemoryRequirements2Safe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                         ->
-                                       Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                 -> IO ()
-vkGetBufferMemoryRequirements2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetBufferMemoryRequirements2)
-
-{-# NOINLINE vkGetBufferMemoryRequirements2Safe #-}
-#endif
-
--- | > void vkGetBufferMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkBufferMemoryRequirementsInfo2* pInfo
---   >     , VkMemoryRequirements2* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetBufferMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                           ->
-         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                   -> IO ()
-
-type PFN_vkGetBufferMemoryRequirements2 =
-     FunPtr HS_vkGetBufferMemoryRequirements2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetBufferMemoryRequirements2 ::
-               PFN_vkGetBufferMemoryRequirements2 ->
-                 HS_vkGetBufferMemoryRequirements2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetBufferMemoryRequirements2Safe ::
-               PFN_vkGetBufferMemoryRequirements2 ->
-                 HS_vkGetBufferMemoryRequirements2
-
-instance VulkanProc "vkGetBufferMemoryRequirements2" where
-        type VkProcType "vkGetBufferMemoryRequirements2" =
-             HS_vkGetBufferMemoryRequirements2
-        vkProcSymbol = _VkGetBufferMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageSparseMemoryRequirements2 :: CString
-
-pattern VkGetImageSparseMemoryRequirements2 <-
-        (is_VkGetImageSparseMemoryRequirements2 -> True)
-  where VkGetImageSparseMemoryRequirements2
-          = _VkGetImageSparseMemoryRequirements2
-
-{-# INLINE _VkGetImageSparseMemoryRequirements2 #-}
-
-_VkGetImageSparseMemoryRequirements2 :: CString
-_VkGetImageSparseMemoryRequirements2
-  = Ptr "vkGetImageSparseMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetImageSparseMemoryRequirements2 #-}
-
-is_VkGetImageSparseMemoryRequirements2 :: CString -> Bool
-is_VkGetImageSparseMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements2
-
-type VkGetImageSparseMemoryRequirements2 =
-     "vkGetImageSparseMemoryRequirements2"
-
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
-               vkGetImageSparseMemoryRequirements2 ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                          ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                      -> IO ()
-
-#else
-vkGetImageSparseMemoryRequirements2 ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                               ->
-                                        Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                   -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                           -> IO ()
-vkGetImageSparseMemoryRequirements2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetImageSparseMemoryRequirements2)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements2 #-}
-#endif
-
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
-               vkGetImageSparseMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                          ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                      -> IO ()
-
-#else
-vkGetImageSparseMemoryRequirements2Safe ::
-                                        VkDevice -- ^ device
-                                                 ->
-                                          Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                                   ->
-                                            Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                       ->
-                                              Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                   -> IO ()
-vkGetImageSparseMemoryRequirements2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageSparseMemoryRequirements2)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements2Safe #-}
-#endif
-
--- | > void vkGetImageSparseMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetImageSparseMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                ->
-         Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                    -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                            -> IO ()
-
-type PFN_vkGetImageSparseMemoryRequirements2 =
-     FunPtr HS_vkGetImageSparseMemoryRequirements2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements2 ::
-               PFN_vkGetImageSparseMemoryRequirements2 ->
-                 HS_vkGetImageSparseMemoryRequirements2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements2Safe ::
-               PFN_vkGetImageSparseMemoryRequirements2 ->
-                 HS_vkGetImageSparseMemoryRequirements2
-
-instance VulkanProc "vkGetImageSparseMemoryRequirements2" where
-        type VkProcType "vkGetImageSparseMemoryRequirements2" =
-             HS_vkGetImageSparseMemoryRequirements2
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirements2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146000
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146002
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 =
-        VkStructureType 1000146003
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 =
-        VkStructureType 1000146004
-
-pattern VkGetPhysicalDeviceFeatures2 :: CString
-
-pattern VkGetPhysicalDeviceFeatures2 <-
-        (is_VkGetPhysicalDeviceFeatures2 -> True)
-  where VkGetPhysicalDeviceFeatures2 = _VkGetPhysicalDeviceFeatures2
-
-{-# INLINE _VkGetPhysicalDeviceFeatures2 #-}
-
-_VkGetPhysicalDeviceFeatures2 :: CString
-_VkGetPhysicalDeviceFeatures2
-  = Ptr "vkGetPhysicalDeviceFeatures2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceFeatures2 #-}
-
-is_VkGetPhysicalDeviceFeatures2 :: CString -> Bool
-is_VkGetPhysicalDeviceFeatures2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures2
-
-type VkGetPhysicalDeviceFeatures2 = "vkGetPhysicalDeviceFeatures2"
-
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
-               vkGetPhysicalDeviceFeatures2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceFeatures2 ::
-                             VkPhysicalDevice -- ^ physicalDevice
-                                              -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                               -> IO ()
-vkGetPhysicalDeviceFeatures2
-  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceFeatures2)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures2 #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
-               vkGetPhysicalDeviceFeatures2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceFeatures2Safe ::
-                                 VkPhysicalDevice -- ^ physicalDevice
-                                                  -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                                   -> IO ()
-vkGetPhysicalDeviceFeatures2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFeatures2)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceFeatures2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures2* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFeatures2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                       -> IO ()
-
-type PFN_vkGetPhysicalDeviceFeatures2 =
-     FunPtr HS_vkGetPhysicalDeviceFeatures2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFeatures2 ::
-               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFeatures2Safe ::
-               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
-
-instance VulkanProc "vkGetPhysicalDeviceFeatures2" where
-        type VkProcType "vkGetPhysicalDeviceFeatures2" =
-             HS_vkGetPhysicalDeviceFeatures2
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceProperties2 :: CString
-
-pattern VkGetPhysicalDeviceProperties2 <-
-        (is_VkGetPhysicalDeviceProperties2 -> True)
-  where VkGetPhysicalDeviceProperties2
-          = _VkGetPhysicalDeviceProperties2
-
-{-# INLINE _VkGetPhysicalDeviceProperties2 #-}
-
-_VkGetPhysicalDeviceProperties2 :: CString
-_VkGetPhysicalDeviceProperties2
-  = Ptr "vkGetPhysicalDeviceProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceProperties2 #-}
-
-is_VkGetPhysicalDeviceProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties2
-
-type VkGetPhysicalDeviceProperties2 =
-     "vkGetPhysicalDeviceProperties2"
-
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
-               vkGetPhysicalDeviceProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                   -> IO ()
-
-#else
-vkGetPhysicalDeviceProperties2 ::
-                               VkPhysicalDevice -- ^ physicalDevice
-                                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties2 #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceProperties2"
-               vkGetPhysicalDeviceProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                   -> IO ()
-
-#else
-vkGetPhysicalDeviceProperties2Safe ::
-                                   VkPhysicalDevice -- ^ physicalDevice
-                                                    -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                       -> IO ()
-vkGetPhysicalDeviceProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties2* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                         -> IO ()
-
-type PFN_vkGetPhysicalDeviceProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceProperties2 ::
-               PFN_vkGetPhysicalDeviceProperties2 ->
-                 HS_vkGetPhysicalDeviceProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceProperties2Safe ::
-               PFN_vkGetPhysicalDeviceProperties2 ->
-                 HS_vkGetPhysicalDeviceProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceProperties2" where
-        type VkProcType "vkGetPhysicalDeviceProperties2" =
-             HS_vkGetPhysicalDeviceProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceFormatProperties2 <-
-        (is_VkGetPhysicalDeviceFormatProperties2 -> True)
-  where VkGetPhysicalDeviceFormatProperties2
-          = _VkGetPhysicalDeviceFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceFormatProperties2 #-}
-
-_VkGetPhysicalDeviceFormatProperties2 :: CString
-_VkGetPhysicalDeviceFormatProperties2
-  = Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceFormatProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceFormatProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties2
-
-type VkGetPhysicalDeviceFormatProperties2 =
-     "vkGetPhysicalDeviceFormatProperties2"
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
-               vkGetPhysicalDeviceFormatProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                       -> IO ()
-
-#else
-vkGetPhysicalDeviceFormatProperties2 ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       VkFormat -- ^ format
-                                                -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                           -> IO ()
-vkGetPhysicalDeviceFormatProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties2 #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
-               vkGetPhysicalDeviceFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                       -> IO ()
-
-#else
-vkGetPhysicalDeviceFormatProperties2Safe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           VkFormat -- ^ format
-                                                    -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceFormatProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties2* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> VkFormat -- ^ format
-                                  -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                             -> IO ()
-
-type PFN_vkGetPhysicalDeviceFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceFormatProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties2 ::
-               PFN_vkGetPhysicalDeviceFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceFormatProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties2Safe ::
-               PFN_vkGetPhysicalDeviceFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceFormatProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceFormatProperties2" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties2" =
-             HS_vkGetPhysicalDeviceFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceFormatProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceImageFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceImageFormatProperties2 <-
-        (is_VkGetPhysicalDeviceImageFormatProperties2 -> True)
-  where VkGetPhysicalDeviceImageFormatProperties2
-          = _VkGetPhysicalDeviceImageFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceImageFormatProperties2 #-}
-
-_VkGetPhysicalDeviceImageFormatProperties2 :: CString
-_VkGetPhysicalDeviceImageFormatProperties2
-  = Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceImageFormatProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceImageFormatProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties2
-
-type VkGetPhysicalDeviceImageFormatProperties2 =
-     "vkGetPhysicalDeviceImageFormatProperties2"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties2"
-               vkGetPhysicalDeviceImageFormatProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                      ->
-                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                -> IO VkResult
-
-#else
-vkGetPhysicalDeviceImageFormatProperties2 ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                 ->
-                                              Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2 #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceImageFormatProperties2"
-               vkGetPhysicalDeviceImageFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                      ->
-                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                -> IO VkResult
-
-#else
-vkGetPhysicalDeviceImageFormatProperties2Safe ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                     ->
-                                                  Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                               -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Safe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
---   > VkResult vkGetPhysicalDeviceImageFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
---   >     , VkImageFormatProperties2* pImageFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceImageFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                            ->
-         Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                      -> IO VkResult
-
-type PFN_vkGetPhysicalDeviceImageFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties2 ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties2Safe ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties2" =
-             HS_vkGetPhysicalDeviceImageFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceImageFormatProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceImageFormatProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties2 <-
-        (is_VkGetPhysicalDeviceQueueFamilyProperties2 -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties2
-          = _VkGetPhysicalDeviceQueueFamilyProperties2
-
-{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
-_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
-_VkGetPhysicalDeviceQueueFamilyProperties2
-  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
-is_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceQueueFamilyProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties2
-
-type VkGetPhysicalDeviceQueueFamilyProperties2 =
-     "vkGetPhysicalDeviceQueueFamilyProperties2"
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties2"
-               vkGetPhysicalDeviceQueueFamilyProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                            -> IO ()
-
-#else
-vkGetPhysicalDeviceQueueFamilyProperties2 ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                       -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                       -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2 #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceQueueFamilyProperties2"
-               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                            -> IO ()
-
-#else
-vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                           -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceQueueFamilyProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceQueueFamilyProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                  -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                  -> IO ()
-
-type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties2 ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceQueueFamilyProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceMemoryProperties2 :: CString
-
-pattern VkGetPhysicalDeviceMemoryProperties2 <-
-        (is_VkGetPhysicalDeviceMemoryProperties2 -> True)
-  where VkGetPhysicalDeviceMemoryProperties2
-          = _VkGetPhysicalDeviceMemoryProperties2
-
-{-# INLINE _VkGetPhysicalDeviceMemoryProperties2 #-}
-
-_VkGetPhysicalDeviceMemoryProperties2 :: CString
-_VkGetPhysicalDeviceMemoryProperties2
-  = Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceMemoryProperties2 #-}
-
-is_VkGetPhysicalDeviceMemoryProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceMemoryProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties2
-
-type VkGetPhysicalDeviceMemoryProperties2 =
-     "vkGetPhysicalDeviceMemoryProperties2"
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
-               vkGetPhysicalDeviceMemoryProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                         -> IO ()
-
-#else
-vkGetPhysicalDeviceMemoryProperties2 ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceMemoryProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceMemoryProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2 #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
-               vkGetPhysicalDeviceMemoryProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                         -> IO ()
-
-#else
-vkGetPhysicalDeviceMemoryProperties2Safe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceMemoryProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceMemoryProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceMemoryProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                               -> IO ()
-
-type PFN_vkGetPhysicalDeviceMemoryProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceMemoryProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties2 ::
-               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
-                 HS_vkGetPhysicalDeviceMemoryProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties2Safe ::
-               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
-                 HS_vkGetPhysicalDeviceMemoryProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties2" =
-             HS_vkGetPhysicalDeviceMemoryProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceMemoryProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties2 <-
-        (is_VkGetPhysicalDeviceSparseImageFormatProperties2 -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties2
-          = _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
-_VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
-_VkGetPhysicalDeviceSparseImageFormatProperties2
-  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceSparseImageFormatProperties2 ::
-                                                   CString -> Bool
-is_VkGetPhysicalDeviceSparseImageFormatProperties2
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-type VkGetPhysicalDeviceSparseImageFormatProperties2 =
-     "vkGetPhysicalDeviceSparseImageFormatProperties2"
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2"
-               vkGetPhysicalDeviceSparseImageFormatProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                            ->
-                   Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                    -> IO ()
-
-#else
-vkGetPhysicalDeviceSparseImageFormatProperties2 ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                                                             ->
-                                                    Ptr Word32 -- ^ pPropertyCount
-                                                               ->
-                                                      Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2"
-               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                            ->
-                   Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                    -> IO ()
-
-#else
-vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-                                                    VkPhysicalDevice -- ^ physicalDevice
-                                                                     ->
-                                                      Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                                                                 ->
-                                                        Ptr Word32 -- ^ pPropertyCount
-                                                                   ->
-                                                          Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                             ->
-                                                            IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Safe
-             #-}
-#endif
-
--- | > void vkGetPhysicalDeviceSparseImageFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
---   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties2* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceSparseImageFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                  ->
-         Ptr Word32 -- ^ pPropertyCount
-                    -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                          -> IO ()
-
-type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2 ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-instance VulkanProc
-           "vkGetPhysicalDeviceSparseImageFormatProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties2" =
-             HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 =
-        VkStructureType 1000059000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 =
-        VkStructureType 1000059001
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 =
-        VkStructureType 1000059004
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 =
-        VkStructureType 1000059005
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 =
-        VkStructureType 1000059006
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059007
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-        = VkStructureType 1000059008
-
-pattern VkTrimCommandPool :: CString
-
-pattern VkTrimCommandPool <- (is_VkTrimCommandPool -> True)
-  where VkTrimCommandPool = _VkTrimCommandPool
-
-{-# INLINE _VkTrimCommandPool #-}
-
-_VkTrimCommandPool :: CString
-_VkTrimCommandPool = Ptr "vkTrimCommandPool\NUL"#
-
-{-# INLINE is_VkTrimCommandPool #-}
-
-is_VkTrimCommandPool :: CString -> Bool
-is_VkTrimCommandPool = (EQ ==) . cmpCStrings _VkTrimCommandPool
-
-type VkTrimCommandPool = "vkTrimCommandPool"
-
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkTrimCommandPool" vkTrimCommandPool
-               :: VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-
-#else
-vkTrimCommandPool ::
-                  VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-vkTrimCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkTrimCommandPool)
-
-{-# NOINLINE vkTrimCommandPool #-}
-#endif
-
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
-               :: VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-
-#else
-vkTrimCommandPoolSafe ::
-                      VkDevice -- ^ device
-                               -> VkCommandPool -- ^ commandPool
-                                                -> VkCommandPoolTrimFlags -- ^ flags
-                                                                          -> IO ()
-vkTrimCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkTrimCommandPool)
-
-{-# NOINLINE vkTrimCommandPoolSafe #-}
-#endif
-
--- | > void vkTrimCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , VkCommandPoolTrimFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
-type HS_vkTrimCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> VkCommandPoolTrimFlags -- ^ flags
-                                                         -> IO ()
-
-type PFN_vkTrimCommandPool = FunPtr HS_vkTrimCommandPool
-
-foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPool ::
-               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolSafe ::
-               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
-
-instance VulkanProc "vkTrimCommandPool" where
-        type VkProcType "vkTrimCommandPool" = HS_vkTrimCommandPool
-        vkProcSymbol = _VkTrimCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkTrimCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)
-
--- | Format can be used as the source image of image transfer commands
---
---   bitpos = @14@
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
-        VkFormatFeatureFlagBits 16384
-
--- | Format can be used as the destination image of image transfer commands
---
---   bitpos = @15@
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
-        VkFormatFeatureFlagBits 32768
-
--- | The 3D image can be viewed as a 2D or 2D array image
---
---   bitpos = @5@
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
-        VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
-        VkImageCreateFlagBits 32
-
--- | bitpos = @7@
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
-        VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
-        VkImageCreateFlagBits 128
-
--- | bitpos = @8@
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
-        VkImageCreateFlagBits 256
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-        = VkStructureType 1000117000
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-        = VkStructureType 1000117001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO =
-        VkStructureType 1000117002
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-        = VkStructureType 1000117003
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-        :: VkImageLayout
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-        = VkImageLayout 1000117000
-
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
-        :: VkImageLayout
-
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
-        = VkImageLayout 1000117001
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO =
-        VkStructureType 1000053000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES =
-        VkStructureType 1000053001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES =
-        VkStructureType 1000053002
-
--- | bitpos = @1@
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits
-
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 2
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-        = VkStructureType 1000120000
-
-pattern VkGetDeviceQueue2 :: CString
-
-pattern VkGetDeviceQueue2 <- (is_VkGetDeviceQueue2 -> True)
-  where VkGetDeviceQueue2 = _VkGetDeviceQueue2
-
-{-# INLINE _VkGetDeviceQueue2 #-}
-
-_VkGetDeviceQueue2 :: CString
-_VkGetDeviceQueue2 = Ptr "vkGetDeviceQueue2\NUL"#
-
-{-# INLINE is_VkGetDeviceQueue2 #-}
-
-is_VkGetDeviceQueue2 :: CString -> Bool
-is_VkGetDeviceQueue2 = (EQ ==) . cmpCStrings _VkGetDeviceQueue2
-
-type VkGetDeviceQueue2 = "vkGetDeviceQueue2"
-
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetDeviceQueue2" vkGetDeviceQueue2
-               :: VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-
-#else
-vkGetDeviceQueue2 ::
-                  VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-vkGetDeviceQueue2
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceQueue2)
-
-{-# NOINLINE vkGetDeviceQueue2 #-}
-#endif
-
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
-               :: VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-
-#else
-vkGetDeviceQueue2Safe ::
-                      VkDevice -- ^ device
-                               -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                         -> Ptr VkQueue -- ^ pQueue
-                                                                        -> IO ()
-vkGetDeviceQueue2Safe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue2)
-
-{-# NOINLINE vkGetDeviceQueue2Safe #-}
-#endif
-
--- | > void vkGetDeviceQueue2
---   >     ( VkDevice device
---   >     , const VkDeviceQueueInfo2* pQueueInfo
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
-type HS_vkGetDeviceQueue2 =
-     VkDevice -- ^ device
-              -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                        -> Ptr VkQueue -- ^ pQueue
-                                                       -> IO ()
-
-type PFN_vkGetDeviceQueue2 = FunPtr HS_vkGetDeviceQueue2
-
-foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue2 ::
-               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
-
-foreign import ccall safe "dynamic" unwrapVkGetDeviceQueue2Safe ::
-               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
-
-instance VulkanProc "vkGetDeviceQueue2" where
-        type VkProcType "vkGetDeviceQueue2" = HS_vkGetDeviceQueue2
-        vkProcSymbol = _VkGetDeviceQueue2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceQueue2
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueue2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO =
-        VkStructureType 1000145000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-        = VkStructureType 1000145001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-        = VkStructureType 1000145002
-
-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 =
-        VkStructureType 1000145003
-
--- | Queues may support protected operations
---
---   bitpos = @4@
-pattern VK_QUEUE_PROTECTED_BIT :: VkQueueFlagBits
-
-pattern VK_QUEUE_PROTECTED_BIT = VkQueueFlagBits 16
-
--- | Queue is a protected-capable device queue
---
---   bitpos = @0@
-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
-        VkDeviceQueueCreateFlagBits
-
-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
-        VkDeviceQueueCreateFlagBits 1
-
--- | Memory is protected
---
---   bitpos = @5@
-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
-        VkMemoryPropertyFlagBits
-
-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
-        VkMemoryPropertyFlagBits 32
-
--- | Buffer requires protected memory
---
---   bitpos = @3@
-pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateFlagBits
-
-pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateFlagBits 8
-
--- | Image requires protected memory
---
---   bitpos = @11@
-pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateFlagBits 2048
-
--- | Command buffers allocated from pool are protected command buffers
---
---   bitpos = @2@
-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
-        VkCommandPoolCreateFlagBits
-
-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
-        VkCommandPoolCreateFlagBits 4
-
-pattern VkCreateSamplerYcbcrConversion :: CString
-
-pattern VkCreateSamplerYcbcrConversion <-
-        (is_VkCreateSamplerYcbcrConversion -> True)
-  where VkCreateSamplerYcbcrConversion
-          = _VkCreateSamplerYcbcrConversion
-
-{-# INLINE _VkCreateSamplerYcbcrConversion #-}
-
-_VkCreateSamplerYcbcrConversion :: CString
-_VkCreateSamplerYcbcrConversion
-  = Ptr "vkCreateSamplerYcbcrConversion\NUL"#
-
-{-# INLINE is_VkCreateSamplerYcbcrConversion #-}
-
-is_VkCreateSamplerYcbcrConversion :: CString -> Bool
-is_VkCreateSamplerYcbcrConversion
-  = (EQ ==) . cmpCStrings _VkCreateSamplerYcbcrConversion
-
-type VkCreateSamplerYcbcrConversion =
-     "vkCreateSamplerYcbcrConversion"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
-               vkCreateSamplerYcbcrConversion ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                  -> IO VkResult
-
-#else
-vkCreateSamplerYcbcrConversion ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                        ->
-                                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             ->
-                                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                  -> IO VkResult
-vkCreateSamplerYcbcrConversion
-  = unsafeDupablePerformIO
-      (vkGetProc @VkCreateSamplerYcbcrConversion)
-
-{-# NOINLINE vkCreateSamplerYcbcrConversion #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCreateSamplerYcbcrConversion"
-               vkCreateSamplerYcbcrConversionSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                  -> IO VkResult
-
-#else
-vkCreateSamplerYcbcrConversionSafe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 ->
-                                         Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                      -> IO VkResult
-vkCreateSamplerYcbcrConversionSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCreateSamplerYcbcrConversion)
-
-{-# NOINLINE vkCreateSamplerYcbcrConversionSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateSamplerYcbcrConversion
---   >     ( VkDevice device
---   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSamplerYcbcrConversion* pYcbcrConversion
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
-type HS_vkCreateSamplerYcbcrConversion =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                        -> IO VkResult
-
-type PFN_vkCreateSamplerYcbcrConversion =
-     FunPtr HS_vkCreateSamplerYcbcrConversion
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateSamplerYcbcrConversion ::
-               PFN_vkCreateSamplerYcbcrConversion ->
-                 HS_vkCreateSamplerYcbcrConversion
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateSamplerYcbcrConversionSafe ::
-               PFN_vkCreateSamplerYcbcrConversion ->
-                 HS_vkCreateSamplerYcbcrConversion
-
-instance VulkanProc "vkCreateSamplerYcbcrConversion" where
-        type VkProcType "vkCreateSamplerYcbcrConversion" =
-             HS_vkCreateSamplerYcbcrConversion
-        vkProcSymbol = _VkCreateSamplerYcbcrConversion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSamplerYcbcrConversion
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroySamplerYcbcrConversion :: CString
-
-pattern VkDestroySamplerYcbcrConversion <-
-        (is_VkDestroySamplerYcbcrConversion -> True)
-  where VkDestroySamplerYcbcrConversion
-          = _VkDestroySamplerYcbcrConversion
-
-{-# INLINE _VkDestroySamplerYcbcrConversion #-}
-
-_VkDestroySamplerYcbcrConversion :: CString
-_VkDestroySamplerYcbcrConversion
-  = Ptr "vkDestroySamplerYcbcrConversion\NUL"#
-
-{-# INLINE is_VkDestroySamplerYcbcrConversion #-}
-
-is_VkDestroySamplerYcbcrConversion :: CString -> Bool
-is_VkDestroySamplerYcbcrConversion
-  = (EQ ==) . cmpCStrings _VkDestroySamplerYcbcrConversion
-
-type VkDestroySamplerYcbcrConversion =
-     "vkDestroySamplerYcbcrConversion"
-
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
-               vkDestroySamplerYcbcrConversion ::
-               VkDevice -- ^ device
-                        ->
-                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
-vkDestroySamplerYcbcrConversion ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                        -> IO ()
-vkDestroySamplerYcbcrConversion
-  = unsafeDupablePerformIO
-      (vkGetProc @VkDestroySamplerYcbcrConversion)
-
-{-# NOINLINE vkDestroySamplerYcbcrConversion #-}
-#endif
-
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkDestroySamplerYcbcrConversion"
-               vkDestroySamplerYcbcrConversionSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
-vkDestroySamplerYcbcrConversionSafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                            -> IO ()
-vkDestroySamplerYcbcrConversionSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkDestroySamplerYcbcrConversion)
-
-{-# NOINLINE vkDestroySamplerYcbcrConversionSafe #-}
-#endif
-
--- | > void vkDestroySamplerYcbcrConversion
---   >     ( VkDevice device
---   >     , VkSamplerYcbcrConversion ycbcrConversion
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
-type HS_vkDestroySamplerYcbcrConversion =
-     VkDevice -- ^ device
-              ->
-       VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkDestroySamplerYcbcrConversion =
-     FunPtr HS_vkDestroySamplerYcbcrConversion
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroySamplerYcbcrConversion ::
-               PFN_vkDestroySamplerYcbcrConversion ->
-                 HS_vkDestroySamplerYcbcrConversion
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroySamplerYcbcrConversionSafe ::
-               PFN_vkDestroySamplerYcbcrConversion ->
-                 HS_vkDestroySamplerYcbcrConversion
-
-instance VulkanProc "vkDestroySamplerYcbcrConversion" where
-        type VkProcType "vkDestroySamplerYcbcrConversion" =
-             HS_vkDestroySamplerYcbcrConversion
-        vkProcSymbol = _VkDestroySamplerYcbcrConversion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySamplerYcbcrConversion
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO =
-        VkStructureType 1000156000
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO =
-        VkStructureType 1000156001
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO =
-        VkStructureType 1000156002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO =
-        VkStructureType 1000156003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-        = VkStructureType 1000156004
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-        = VkStructureType 1000156005
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION =
-        VkObjectType 1000156000
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007
-
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 =
-        VkFormat 1000156009
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 =
-        VkFormat 1000156010
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 =
-        VkFormat 1000156011
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156012
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156013
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156014
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156015
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 =
-        VkFormat 1000156016
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017
-
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 =
-        VkFormat 1000156019
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 =
-        VkFormat 1000156020
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 =
-        VkFormat 1000156021
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156022
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156023
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156024
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156025
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 =
-        VkFormat 1000156026
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM =
-        VkFormat 1000156029
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM =
-        VkFormat 1000156031
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM =
-        VkFormat 1000156033
-
--- | bitpos = @4@
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectFlagBits 16
-
--- | bitpos = @5@
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectFlagBits 32
-
--- | bitpos = @6@
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectFlagBits 64
-
--- | bitpos = @9@
-pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateFlagBits 512
-
--- | Format can have midpoint rather than cosited chroma samples
---
---   bitpos = @17@
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
-        VkFormatFeatureFlagBits 131072
-
--- | Format can be used with linear filtering whilst color conversion is enabled
---
---   bitpos = @18@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-        = VkFormatFeatureFlagBits 262144
-
--- | Format can have different chroma, min and mag filters
---
---   bitpos = @19@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
-        = VkFormatFeatureFlagBits 524288
-
--- | bitpos = @20@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-        = VkFormatFeatureFlagBits 1048576
-
--- | bitpos = @21@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
-        = VkFormatFeatureFlagBits 2097152
-
--- | Format supports disjoint planes
---
---   bitpos = @22@
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
-        VkFormatFeatureFlagBits 4194304
-
--- | Format can have cosited rather than midpoint chroma samples
---
---   bitpos = @23@
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
-        VkFormatFeatureFlagBits 8388608
-
-pattern VkCreateDescriptorUpdateTemplate :: CString
-
-pattern VkCreateDescriptorUpdateTemplate <-
-        (is_VkCreateDescriptorUpdateTemplate -> True)
-  where VkCreateDescriptorUpdateTemplate
-          = _VkCreateDescriptorUpdateTemplate
-
-{-# INLINE _VkCreateDescriptorUpdateTemplate #-}
-
-_VkCreateDescriptorUpdateTemplate :: CString
-_VkCreateDescriptorUpdateTemplate
-  = Ptr "vkCreateDescriptorUpdateTemplate\NUL"#
-
-{-# INLINE is_VkCreateDescriptorUpdateTemplate #-}
-
-is_VkCreateDescriptorUpdateTemplate :: CString -> Bool
-is_VkCreateDescriptorUpdateTemplate
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorUpdateTemplate
-
-type VkCreateDescriptorUpdateTemplate =
-     "vkCreateDescriptorUpdateTemplate"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
-               vkCreateDescriptorUpdateTemplate ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                    -> IO VkResult
-
-#else
-vkCreateDescriptorUpdateTemplate ::
-                                 VkDevice -- ^ device
-                                          ->
-                                   Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               ->
-                                       Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                      -> IO VkResult
-vkCreateDescriptorUpdateTemplate
-  = unsafeDupablePerformIO
-      (vkGetProc @VkCreateDescriptorUpdateTemplate)
-
-{-# NOINLINE vkCreateDescriptorUpdateTemplate #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
-               vkCreateDescriptorUpdateTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                    -> IO VkResult
-
-#else
-vkCreateDescriptorUpdateTemplateSafe ::
-                                     VkDevice -- ^ device
-                                              ->
-                                       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                                ->
-                                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   ->
-                                           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                          -> IO VkResult
-vkCreateDescriptorUpdateTemplateSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCreateDescriptorUpdateTemplate)
-
-{-# NOINLINE vkCreateDescriptorUpdateTemplateSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorUpdateTemplate
---   >     ( VkDevice device
---   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
-type HS_vkCreateDescriptorUpdateTemplate =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                          -> IO VkResult
-
-type PFN_vkCreateDescriptorUpdateTemplate =
-     FunPtr HS_vkCreateDescriptorUpdateTemplate
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDescriptorUpdateTemplate ::
-               PFN_vkCreateDescriptorUpdateTemplate ->
-                 HS_vkCreateDescriptorUpdateTemplate
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateDescriptorUpdateTemplateSafe ::
-               PFN_vkCreateDescriptorUpdateTemplate ->
-                 HS_vkCreateDescriptorUpdateTemplate
-
-instance VulkanProc "vkCreateDescriptorUpdateTemplate" where
-        type VkProcType "vkCreateDescriptorUpdateTemplate" =
-             HS_vkCreateDescriptorUpdateTemplate
-        vkProcSymbol = _VkCreateDescriptorUpdateTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorUpdateTemplate
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDescriptorUpdateTemplate :: CString
-
-pattern VkDestroyDescriptorUpdateTemplate <-
-        (is_VkDestroyDescriptorUpdateTemplate -> True)
-  where VkDestroyDescriptorUpdateTemplate
-          = _VkDestroyDescriptorUpdateTemplate
-
-{-# INLINE _VkDestroyDescriptorUpdateTemplate #-}
-
-_VkDestroyDescriptorUpdateTemplate :: CString
-_VkDestroyDescriptorUpdateTemplate
-  = Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#
-
-{-# INLINE is_VkDestroyDescriptorUpdateTemplate #-}
-
-is_VkDestroyDescriptorUpdateTemplate :: CString -> Bool
-is_VkDestroyDescriptorUpdateTemplate
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorUpdateTemplate
-
-type VkDestroyDescriptorUpdateTemplate =
-     "vkDestroyDescriptorUpdateTemplate"
-
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
-               vkDestroyDescriptorUpdateTemplate ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-#else
-vkDestroyDescriptorUpdateTemplate ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                            -> IO ()
-vkDestroyDescriptorUpdateTemplate
-  = unsafeDupablePerformIO
-      (vkGetProc @VkDestroyDescriptorUpdateTemplate)
-
-{-# NOINLINE vkDestroyDescriptorUpdateTemplate #-}
-#endif
-
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
-               vkDestroyDescriptorUpdateTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-#else
-vkDestroyDescriptorUpdateTemplateSafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                   ->
-                                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyDescriptorUpdateTemplateSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkDestroyDescriptorUpdateTemplate)
-
-{-# NOINLINE vkDestroyDescriptorUpdateTemplateSafe #-}
-#endif
-
--- | > void vkDestroyDescriptorUpdateTemplate
---   >     ( VkDevice device
---   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
-type HS_vkDestroyDescriptorUpdateTemplate =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyDescriptorUpdateTemplate =
-     FunPtr HS_vkDestroyDescriptorUpdateTemplate
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDescriptorUpdateTemplate ::
-               PFN_vkDestroyDescriptorUpdateTemplate ->
-                 HS_vkDestroyDescriptorUpdateTemplate
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyDescriptorUpdateTemplateSafe ::
-               PFN_vkDestroyDescriptorUpdateTemplate ->
-                 HS_vkDestroyDescriptorUpdateTemplate
-
-instance VulkanProc "vkDestroyDescriptorUpdateTemplate" where
-        type VkProcType "vkDestroyDescriptorUpdateTemplate" =
-             HS_vkDestroyDescriptorUpdateTemplate
-        vkProcSymbol = _VkDestroyDescriptorUpdateTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorUpdateTemplate
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorUpdateTemplateSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkUpdateDescriptorSetWithTemplate :: CString
-
-pattern VkUpdateDescriptorSetWithTemplate <-
-        (is_VkUpdateDescriptorSetWithTemplate -> True)
-  where VkUpdateDescriptorSetWithTemplate
-          = _VkUpdateDescriptorSetWithTemplate
-
-{-# INLINE _VkUpdateDescriptorSetWithTemplate #-}
-
-_VkUpdateDescriptorSetWithTemplate :: CString
-_VkUpdateDescriptorSetWithTemplate
-  = Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#
-
-{-# INLINE is_VkUpdateDescriptorSetWithTemplate #-}
-
-is_VkUpdateDescriptorSetWithTemplate :: CString -> Bool
-is_VkUpdateDescriptorSetWithTemplate
-  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSetWithTemplate
-
-type VkUpdateDescriptorSetWithTemplate =
-     "vkUpdateDescriptorSetWithTemplate"
-
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
-               vkUpdateDescriptorSetWithTemplate ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSet -- ^ descriptorSet
-                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr Void -- ^ pData
-                                                                           -> IO ()
-
-#else
-vkUpdateDescriptorSetWithTemplate ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkDescriptorSet -- ^ descriptorSet
-                                                    ->
-                                      VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                 -> Ptr Void -- ^ pData
-                                                                             -> IO ()
-vkUpdateDescriptorSetWithTemplate
-  = unsafeDupablePerformIO
-      (vkGetProc @VkUpdateDescriptorSetWithTemplate)
-
-{-# NOINLINE vkUpdateDescriptorSetWithTemplate #-}
-#endif
-
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
-               vkUpdateDescriptorSetWithTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSet -- ^ descriptorSet
-                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr Void -- ^ pData
-                                                                           -> IO ()
-
-#else
-vkUpdateDescriptorSetWithTemplateSafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkDescriptorSet -- ^ descriptorSet
-                                                        ->
-                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                     -> Ptr Void -- ^ pData
-                                                                                 -> IO ()
-vkUpdateDescriptorSetWithTemplateSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkUpdateDescriptorSetWithTemplate)
-
-{-# NOINLINE vkUpdateDescriptorSetWithTemplateSafe #-}
-#endif
-
--- | > void vkUpdateDescriptorSetWithTemplate
---   >     ( VkDevice device
---   >     , VkDescriptorSet descriptorSet
---   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
-type HS_vkUpdateDescriptorSetWithTemplate =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorSet -- ^ descriptorSet
-                       -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                     -> Ptr Void -- ^ pData
-                                                                 -> IO ()
-
-type PFN_vkUpdateDescriptorSetWithTemplate =
-     FunPtr HS_vkUpdateDescriptorSetWithTemplate
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkUpdateDescriptorSetWithTemplate ::
-               PFN_vkUpdateDescriptorSetWithTemplate ->
-                 HS_vkUpdateDescriptorSetWithTemplate
-
-foreign import ccall safe "dynamic"
-               unwrapVkUpdateDescriptorSetWithTemplateSafe ::
-               PFN_vkUpdateDescriptorSetWithTemplate ->
-                 HS_vkUpdateDescriptorSetWithTemplate
-
-instance VulkanProc "vkUpdateDescriptorSetWithTemplate" where
-        type VkProcType "vkUpdateDescriptorSetWithTemplate" =
-             HS_vkUpdateDescriptorSetWithTemplate
-        vkProcSymbol = _VkUpdateDescriptorSetWithTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUpdateDescriptorSetWithTemplate
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetWithTemplateSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO =
-        VkStructureType 1000085000
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE =
-        VkObjectType 1000085000
-
-pattern VkGetPhysicalDeviceExternalBufferProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalBufferProperties <-
-        (is_VkGetPhysicalDeviceExternalBufferProperties -> True)
-  where VkGetPhysicalDeviceExternalBufferProperties
-          = _VkGetPhysicalDeviceExternalBufferProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalBufferProperties #-}
-
-_VkGetPhysicalDeviceExternalBufferProperties :: CString
-_VkGetPhysicalDeviceExternalBufferProperties
-  = Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalBufferProperties #-}
-
-is_VkGetPhysicalDeviceExternalBufferProperties :: CString -> Bool
-is_VkGetPhysicalDeviceExternalBufferProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceExternalBufferProperties
-
-type VkGetPhysicalDeviceExternalBufferProperties =
-     "vkGetPhysicalDeviceExternalBufferProperties"
-
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalBufferProperties"
-               vkGetPhysicalDeviceExternalBufferProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                        ->
-                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                  -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalBufferProperties ::
-                                            VkPhysicalDevice -- ^ physicalDevice
-                                                             ->
-                                              Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                     ->
-                                                Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceExternalBufferProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceExternalBufferProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalBufferProperties #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalBufferProperties"
-               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                        ->
-                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                  -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                         ->
-                                                    Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceExternalBufferPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceExternalBufferProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesSafe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceExternalBufferProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
---   >     , VkExternalBufferProperties* pExternalBufferProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalBufferProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                              ->
-         Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                        -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalBufferProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalBufferProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalBufferProperties ::
-               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
-                 HS_vkGetPhysicalDeviceExternalBufferProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
-                 HS_vkGetPhysicalDeviceExternalBufferProperties
-
-instance VulkanProc "vkGetPhysicalDeviceExternalBufferProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalBufferProperties" =
-             HS_vkGetPhysicalDeviceExternalBufferProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalBufferProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceExternalBufferProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-        = VkStructureType 1000071000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES =
-        VkStructureType 1000071001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO =
-        VkStructureType 1000071002
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES =
-        VkStructureType 1000071003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES =
-        VkStructureType 1000071004
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO =
-        VkStructureType 1000072000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO =
-        VkStructureType 1000072001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO =
-        VkStructureType 1000072002
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)
-
-pattern VkGetPhysicalDeviceExternalFenceProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalFenceProperties <-
-        (is_VkGetPhysicalDeviceExternalFenceProperties -> True)
-  where VkGetPhysicalDeviceExternalFenceProperties
-          = _VkGetPhysicalDeviceExternalFenceProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalFenceProperties #-}
-
-_VkGetPhysicalDeviceExternalFenceProperties :: CString
-_VkGetPhysicalDeviceExternalFenceProperties
-  = Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalFenceProperties #-}
-
-is_VkGetPhysicalDeviceExternalFenceProperties :: CString -> Bool
-is_VkGetPhysicalDeviceExternalFenceProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceExternalFenceProperties
-
-type VkGetPhysicalDeviceExternalFenceProperties =
-     "vkGetPhysicalDeviceExternalFenceProperties"
-
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalFenceProperties"
-               vkGetPhysicalDeviceExternalFenceProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                       ->
-                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalFenceProperties ::
-                                           VkPhysicalDevice -- ^ physicalDevice
-                                                            ->
-                                             Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                   ->
-                                               Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceExternalFenceProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceExternalFenceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalFenceProperties #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalFenceProperties"
-               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                       ->
-                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalFencePropertiesSafe ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                       ->
-                                                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceExternalFencePropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceExternalFenceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesSafe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceExternalFenceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
---   >     , VkExternalFenceProperties* pExternalFenceProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalFenceProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                             ->
-         Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                       -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalFenceProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalFenceProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalFenceProperties ::
-               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
-                 HS_vkGetPhysicalDeviceExternalFenceProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe ::
-               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
-                 HS_vkGetPhysicalDeviceExternalFenceProperties
-
-instance VulkanProc "vkGetPhysicalDeviceExternalFenceProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalFenceProperties" =
-             HS_vkGetPhysicalDeviceExternalFenceProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalFenceProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceExternalFenceProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO =
-        VkStructureType 1000112000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES =
-        VkStructureType 1000112001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO =
-        VkStructureType 1000113000
-
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO =
-        VkStructureType 1000077000
-
-pattern VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalSemaphoreProperties <-
-        (is_VkGetPhysicalDeviceExternalSemaphoreProperties -> True)
-  where VkGetPhysicalDeviceExternalSemaphoreProperties
-          = _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
-_VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
-_VkGetPhysicalDeviceExternalSemaphoreProperties
-  = Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
-is_VkGetPhysicalDeviceExternalSemaphoreProperties ::
-                                                  CString -> Bool
-is_VkGetPhysicalDeviceExternalSemaphoreProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-type VkGetPhysicalDeviceExternalSemaphoreProperties =
-     "vkGetPhysicalDeviceExternalSemaphoreProperties"
-
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalSemaphoreProperties"
-               vkGetPhysicalDeviceExternalSemaphoreProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                           ->
-                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                     -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalSemaphoreProperties ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                           ->
-                                                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                     -> IO ()
-vkGetPhysicalDeviceExternalSemaphoreProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalSemaphoreProperties #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalSemaphoreProperties"
-               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                           ->
-                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                     -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-                                                   VkPhysicalDevice -- ^ physicalDevice
-                                                                    ->
-                                                     Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                               ->
-                                                       Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesSafe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceExternalSemaphoreProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
---   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalSemaphoreProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                 ->
-         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                           -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalSemaphoreProperties ::
-               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
-                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
-                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-instance VulkanProc
-           "vkGetPhysicalDeviceExternalSemaphoreProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalSemaphoreProperties" =
-             HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceExternalSemaphoreProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO =
-        VkStructureType 1000076000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES =
-        VkStructureType 1000076001
-
-pattern VkGetDescriptorSetLayoutSupport :: CString
-
-pattern VkGetDescriptorSetLayoutSupport <-
-        (is_VkGetDescriptorSetLayoutSupport -> True)
-  where VkGetDescriptorSetLayoutSupport
-          = _VkGetDescriptorSetLayoutSupport
-
-{-# INLINE _VkGetDescriptorSetLayoutSupport #-}
-
-_VkGetDescriptorSetLayoutSupport :: CString
-_VkGetDescriptorSetLayoutSupport
-  = Ptr "vkGetDescriptorSetLayoutSupport\NUL"#
-
-{-# INLINE is_VkGetDescriptorSetLayoutSupport #-}
-
-is_VkGetDescriptorSetLayoutSupport :: CString -> Bool
-is_VkGetDescriptorSetLayoutSupport
-  = (EQ ==) . cmpCStrings _VkGetDescriptorSetLayoutSupport
-
-type VkGetDescriptorSetLayoutSupport =
-     "vkGetDescriptorSetLayoutSupport"
-
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
-               vkGetDescriptorSetLayoutSupport ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                    -> IO ()
-
-#else
-vkGetDescriptorSetLayoutSupport ::
-                                VkDevice -- ^ device
-                                         ->
-                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                      ->
-                                    Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                     -> IO ()
-vkGetDescriptorSetLayoutSupport
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetDescriptorSetLayoutSupport)
-
-{-# NOINLINE vkGetDescriptorSetLayoutSupport #-}
-#endif
-
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
-               vkGetDescriptorSetLayoutSupportSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                    -> IO ()
-
-#else
-vkGetDescriptorSetLayoutSupportSafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                          ->
-                                        Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                         -> IO ()
-vkGetDescriptorSetLayoutSupportSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetDescriptorSetLayoutSupport)
-
-{-# NOINLINE vkGetDescriptorSetLayoutSupportSafe #-}
-#endif
-
--- | > void vkGetDescriptorSetLayoutSupport
---   >     ( VkDevice device
---   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
---   >     , VkDescriptorSetLayoutSupport* pSupport
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
-type HS_vkGetDescriptorSetLayoutSupport =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                           ->
-         Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                          -> IO ()
-
-type PFN_vkGetDescriptorSetLayoutSupport =
-     FunPtr HS_vkGetDescriptorSetLayoutSupport
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDescriptorSetLayoutSupport ::
-               PFN_vkGetDescriptorSetLayoutSupport ->
-                 HS_vkGetDescriptorSetLayoutSupport
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetDescriptorSetLayoutSupportSafe ::
-               PFN_vkGetDescriptorSetLayoutSupport ->
-                 HS_vkGetDescriptorSetLayoutSupport
-
-instance VulkanProc "vkGetDescriptorSetLayoutSupport" where
-        type VkProcType "vkGetDescriptorSetLayoutSupport" =
-             HS_vkGetDescriptorSetLayoutSupport
-        vkProcSymbol = _VkGetDescriptorSetLayoutSupport
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDescriptorSetLayoutSupport
-
-        {-# INLINE unwrapVkProcPtr #-}
+        vkEnumerateInstanceVersion, vkEnumerateInstanceVersionUnsafe,
+        vkEnumerateInstanceVersionSafe,
+        module Graphics.Vulkan.Types.Enum.Result,
+        -- ** Promoted from VK_KHR_relaxed_block_layout, which has no API
+        --
+
+        -- ** Promoted from VK_KHR_storage_buffer_storage_class, which has no API
+        --
+
+        -- ** Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
+        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.Shader,
+        module Graphics.Vulkan.Types.Enum.StructureType,
+        module Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
+        -- ** Promoted from VK_KHR_bind_memory2
+        module Graphics.Vulkan.Types.Struct.Bind, -- > #include "vk_platform.h"
+                                                  VkBindBufferMemory2,
+        pattern VkBindBufferMemory2, HS_vkBindBufferMemory2,
+        PFN_vkBindBufferMemory2, vkBindBufferMemory2,
+        vkBindBufferMemory2Unsafe, vkBindBufferMemory2Safe,
+        VkBindImageMemory2, pattern VkBindImageMemory2,
+        HS_vkBindImageMemory2, PFN_vkBindImageMemory2, vkBindImageMemory2,
+        vkBindImageMemory2Unsafe, vkBindImageMemory2Safe,
+        module Graphics.Vulkan.Types.Handles,
+        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+        pattern VK_IMAGE_CREATE_ALIAS_BIT,
+        -- ** Promoted from VK_KHR_16bit_storage
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Struct.Device,
+        module Graphics.Vulkan.Types.Enum.Device,
+        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+        -- ** Promoted from VK_KHR_dedicated_allocation
+        module Graphics.Vulkan.Types.Struct.Memory,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
+        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+        -- ** Promoted from VK_KHR_device_group
+        module Graphics.Vulkan.Types.Struct.Clear,
+        module Graphics.Vulkan.Types.Struct.Command,
+        module Graphics.Vulkan.Types.Enum.Command,
+        module Graphics.Vulkan.Types.Struct.Extent,
+        module Graphics.Vulkan.Types.Enum.Image,
+        module Graphics.Vulkan.Types.Struct.Image,
+        module Graphics.Vulkan.Types.Enum.Memory,
+        module Graphics.Vulkan.Types.Struct.Offset,
+        module Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag,
+        module Graphics.Vulkan.Types.Enum.Pipeline,
+        module Graphics.Vulkan.Types.Enum.Query,
+        module Graphics.Vulkan.Types.Struct.Rect,
+        module Graphics.Vulkan.Types.Struct.RenderPass,
+        module Graphics.Vulkan.Types.Struct.Sparse,
+        module Graphics.Vulkan.Types.Enum.Sparse,
+        module Graphics.Vulkan.Types.Struct.SubmitInfo,
+        -- > #include "vk_platform.h"
+        VkGetDeviceGroupPeerMemoryFeatures,
+        pattern VkGetDeviceGroupPeerMemoryFeatures,
+        HS_vkGetDeviceGroupPeerMemoryFeatures,
+        PFN_vkGetDeviceGroupPeerMemoryFeatures,
+        vkGetDeviceGroupPeerMemoryFeatures,
+        vkGetDeviceGroupPeerMemoryFeaturesUnsafe,
+        vkGetDeviceGroupPeerMemoryFeaturesSafe, VkCmdSetDeviceMask,
+        pattern VkCmdSetDeviceMask, HS_vkCmdSetDeviceMask,
+        PFN_vkCmdSetDeviceMask, vkCmdSetDeviceMask,
+        vkCmdSetDeviceMaskUnsafe, vkCmdSetDeviceMaskSafe,
+        VkCmdDispatchBase, pattern VkCmdDispatchBase, HS_vkCmdDispatchBase,
+        PFN_vkCmdDispatchBase, vkCmdDispatchBase, vkCmdDispatchBaseUnsafe,
+        vkCmdDispatchBaseSafe,
+        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
+        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
+        pattern VK_PIPELINE_CREATE_DISPATCH_BASE,
+        pattern VK_DEPENDENCY_DEVICE_GROUP_BIT,
+        -- ** Promoted from VK_KHR_device_group + VK_KHR_bind_memory2
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
+        pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
+        -- ** Promoted from VK_KHR_device_group_creation
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        VkEnumeratePhysicalDeviceGroups,
+        pattern VkEnumeratePhysicalDeviceGroups,
+        HS_vkEnumeratePhysicalDeviceGroups,
+        PFN_vkEnumeratePhysicalDeviceGroups,
+        vkEnumeratePhysicalDeviceGroups,
+        vkEnumeratePhysicalDeviceGroupsUnsafe,
+        vkEnumeratePhysicalDeviceGroupsSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
+        pattern VK_MAX_DEVICE_GROUP_SIZE,
+        pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
+        -- ** Promoted from VK_KHR_get_memory_requirements2
+        module Graphics.Vulkan.Types.Struct.Buffer,
+        -- > #include "vk_platform.h"
+        VkGetImageMemoryRequirements2,
+        pattern VkGetImageMemoryRequirements2,
+        HS_vkGetImageMemoryRequirements2,
+        PFN_vkGetImageMemoryRequirements2, vkGetImageMemoryRequirements2,
+        vkGetImageMemoryRequirements2Unsafe,
+        vkGetImageMemoryRequirements2Safe, VkGetBufferMemoryRequirements2,
+        pattern VkGetBufferMemoryRequirements2,
+        HS_vkGetBufferMemoryRequirements2,
+        PFN_vkGetBufferMemoryRequirements2, vkGetBufferMemoryRequirements2,
+        vkGetBufferMemoryRequirements2Unsafe,
+        vkGetBufferMemoryRequirements2Safe,
+        VkGetImageSparseMemoryRequirements2,
+        pattern VkGetImageSparseMemoryRequirements2,
+        HS_vkGetImageSparseMemoryRequirements2,
+        PFN_vkGetImageSparseMemoryRequirements2,
+        vkGetImageSparseMemoryRequirements2,
+        vkGetImageSparseMemoryRequirements2Unsafe,
+        vkGetImageSparseMemoryRequirements2Safe,
+        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,
+        -- ** Promoted from VK_KHR_get_physical_device_properties2
+        module Graphics.Vulkan.Types.Enum.Format,
+        module Graphics.Vulkan.Types.Struct.FormatProperties,
+        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
+        module Graphics.Vulkan.Types.Enum.Queue,
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceFeatures2, pattern VkGetPhysicalDeviceFeatures2,
+        HS_vkGetPhysicalDeviceFeatures2, PFN_vkGetPhysicalDeviceFeatures2,
+        vkGetPhysicalDeviceFeatures2, vkGetPhysicalDeviceFeatures2Unsafe,
+        vkGetPhysicalDeviceFeatures2Safe, VkGetPhysicalDeviceProperties2,
+        pattern VkGetPhysicalDeviceProperties2,
+        HS_vkGetPhysicalDeviceProperties2,
+        PFN_vkGetPhysicalDeviceProperties2, vkGetPhysicalDeviceProperties2,
+        vkGetPhysicalDeviceProperties2Unsafe,
+        vkGetPhysicalDeviceProperties2Safe,
+        VkGetPhysicalDeviceFormatProperties2,
+        pattern VkGetPhysicalDeviceFormatProperties2,
+        HS_vkGetPhysicalDeviceFormatProperties2,
+        PFN_vkGetPhysicalDeviceFormatProperties2,
+        vkGetPhysicalDeviceFormatProperties2,
+        vkGetPhysicalDeviceFormatProperties2Unsafe,
+        vkGetPhysicalDeviceFormatProperties2Safe,
+        VkGetPhysicalDeviceImageFormatProperties2,
+        pattern VkGetPhysicalDeviceImageFormatProperties2,
+        HS_vkGetPhysicalDeviceImageFormatProperties2,
+        PFN_vkGetPhysicalDeviceImageFormatProperties2,
+        vkGetPhysicalDeviceImageFormatProperties2,
+        vkGetPhysicalDeviceImageFormatProperties2Unsafe,
+        vkGetPhysicalDeviceImageFormatProperties2Safe,
+        VkGetPhysicalDeviceQueueFamilyProperties2,
+        pattern VkGetPhysicalDeviceQueueFamilyProperties2,
+        HS_vkGetPhysicalDeviceQueueFamilyProperties2,
+        PFN_vkGetPhysicalDeviceQueueFamilyProperties2,
+        vkGetPhysicalDeviceQueueFamilyProperties2,
+        vkGetPhysicalDeviceQueueFamilyProperties2Unsafe,
+        vkGetPhysicalDeviceQueueFamilyProperties2Safe,
+        VkGetPhysicalDeviceMemoryProperties2,
+        pattern VkGetPhysicalDeviceMemoryProperties2,
+        HS_vkGetPhysicalDeviceMemoryProperties2,
+        PFN_vkGetPhysicalDeviceMemoryProperties2,
+        vkGetPhysicalDeviceMemoryProperties2,
+        vkGetPhysicalDeviceMemoryProperties2Unsafe,
+        vkGetPhysicalDeviceMemoryProperties2Safe,
+        VkGetPhysicalDeviceSparseImageFormatProperties2,
+        pattern VkGetPhysicalDeviceSparseImageFormatProperties2,
+        HS_vkGetPhysicalDeviceSparseImageFormatProperties2,
+        PFN_vkGetPhysicalDeviceSparseImageFormatProperties2,
+        vkGetPhysicalDeviceSparseImageFormatProperties2,
+        vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe,
+        vkGetPhysicalDeviceSparseImageFormatProperties2Safe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
+        pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
+        -- ** Promoted from VK_KHR_maintenance1
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        VkTrimCommandPool, pattern VkTrimCommandPool, HS_vkTrimCommandPool,
+        PFN_vkTrimCommandPool, vkTrimCommandPool, vkTrimCommandPoolUnsafe,
+        vkTrimCommandPoolSafe, pattern VK_ERROR_OUT_OF_POOL_MEMORY,
+        pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
+        pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+        pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
+        -- ** Promoted from VK_KHR_maintenance2
+        module Graphics.Vulkan.Types.Enum.AccessFlags,
+        module Graphics.Vulkan.Types.Struct.Attachment,
+        module Graphics.Vulkan.Types.Enum.Attachment,
+        module Graphics.Vulkan.Types.Struct.ComponentMapping,
+        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
+        module Graphics.Vulkan.Types.Enum.DependencyFlags,
+        module Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference,
+        module Graphics.Vulkan.Types.Struct.Pipeline,
+        module Graphics.Vulkan.Types.Enum.PointClippingBehavior,
+        module Graphics.Vulkan.Types.Struct.Subpass,
+        module Graphics.Vulkan.Types.Enum.Subpass,
+        module Graphics.Vulkan.Types.Enum.TessellationDomainOrigin,
+        -- > #include "vk_platform.h"
+        pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
+        pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
+        pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
+        pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+        -- ** Promoted from VK_KHR_multiview
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
+        pattern VK_DEPENDENCY_VIEW_LOCAL_BIT,
+        -- ** Promoted from VK_KHR_variable_pointers
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
+        -- ** Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they weren't actually promoted from an extension.
+        module Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo,
+        -- > #include "vk_platform.h"
+        VkGetDeviceQueue2, pattern VkGetDeviceQueue2, HS_vkGetDeviceQueue2,
+        PFN_vkGetDeviceQueue2, vkGetDeviceQueue2, vkGetDeviceQueue2Unsafe,
+        vkGetDeviceQueue2Safe,
+        pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,
+        pattern VK_QUEUE_PROTECTED_BIT,
+        pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,
+        pattern VK_MEMORY_PROPERTY_PROTECTED_BIT,
+        pattern VK_BUFFER_CREATE_PROTECTED_BIT,
+        pattern VK_IMAGE_CREATE_PROTECTED_BIT,
+        pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT,
+        -- ** Promoted from VK_KHR_sampler_ycbcr_conversion
+        module Graphics.Vulkan.Types.Enum.BorderColor,
+        module Graphics.Vulkan.Types.Enum.ChromaLocation,
+        module Graphics.Vulkan.Types.Enum.CompareOp,
+        module Graphics.Vulkan.Types.Enum.Filter,
+        module Graphics.Vulkan.Types.Enum.Sampler,
+        module Graphics.Vulkan.Types.Struct.Sampler,
+        -- > #include "vk_platform.h"
+        VkCreateSamplerYcbcrConversion,
+        pattern VkCreateSamplerYcbcrConversion,
+        HS_vkCreateSamplerYcbcrConversion,
+        PFN_vkCreateSamplerYcbcrConversion, vkCreateSamplerYcbcrConversion,
+        vkCreateSamplerYcbcrConversionUnsafe,
+        vkCreateSamplerYcbcrConversionSafe,
+        VkDestroySamplerYcbcrConversion,
+        pattern VkDestroySamplerYcbcrConversion,
+        HS_vkDestroySamplerYcbcrConversion,
+        PFN_vkDestroySamplerYcbcrConversion,
+        vkDestroySamplerYcbcrConversion,
+        vkDestroySamplerYcbcrConversionUnsafe,
+        vkDestroySamplerYcbcrConversionSafe,
+        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
+        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
+        module Graphics.Vulkan.Types.Funcpointers,
+        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
+        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_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_IMAGE_FORMAT_PROPERTIES,
+        pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
+        pattern VK_FORMAT_G8B8G8R8_422_UNORM,
+        pattern VK_FORMAT_B8G8R8G8_422_UNORM,
+        pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
+        pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
+        pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
+        pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
+        pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
+        pattern VK_FORMAT_R10X6_UNORM_PACK16,
+        pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
+        pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
+        pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
+        pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
+        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
+        pattern VK_FORMAT_R12X4_UNORM_PACK16,
+        pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
+        pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
+        pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
+        pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
+        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
+        pattern VK_FORMAT_G16B16G16R16_422_UNORM,
+        pattern VK_FORMAT_B16G16R16G16_422_UNORM,
+        pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
+        pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
+        pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
+        pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
+        pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
+        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_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
+        pattern VK_FORMAT_FEATURE_DISJOINT_BIT,
+        pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
+        -- ** Promoted from VK_KHR_descriptor_update_template
+        module Graphics.Vulkan.Types.Enum.Descriptor,
+        module Graphics.Vulkan.Types.Struct.Descriptor,
+        -- > #include "vk_platform.h"
+        VkCreateDescriptorUpdateTemplate,
+        pattern VkCreateDescriptorUpdateTemplate,
+        HS_vkCreateDescriptorUpdateTemplate,
+        PFN_vkCreateDescriptorUpdateTemplate,
+        vkCreateDescriptorUpdateTemplate,
+        vkCreateDescriptorUpdateTemplateUnsafe,
+        vkCreateDescriptorUpdateTemplateSafe,
+        VkDestroyDescriptorUpdateTemplate,
+        pattern VkDestroyDescriptorUpdateTemplate,
+        HS_vkDestroyDescriptorUpdateTemplate,
+        PFN_vkDestroyDescriptorUpdateTemplate,
+        vkDestroyDescriptorUpdateTemplate,
+        vkDestroyDescriptorUpdateTemplateUnsafe,
+        vkDestroyDescriptorUpdateTemplateSafe,
+        VkUpdateDescriptorSetWithTemplate,
+        pattern VkUpdateDescriptorSetWithTemplate,
+        HS_vkUpdateDescriptorSetWithTemplate,
+        PFN_vkUpdateDescriptorSetWithTemplate,
+        vkUpdateDescriptorSetWithTemplate,
+        vkUpdateDescriptorSetWithTemplateUnsafe,
+        vkUpdateDescriptorSetWithTemplateSafe,
+        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
+        pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+        -- ** Promoted from VK_KHR_external_memory_capabilities
+        module Graphics.Vulkan.Types.Enum.Buffer,
+        module Graphics.Vulkan.Types.Struct.External,
+        module Graphics.Vulkan.Types.Enum.External,
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceExternalBufferProperties,
+        pattern VkGetPhysicalDeviceExternalBufferProperties,
+        HS_vkGetPhysicalDeviceExternalBufferProperties,
+        PFN_vkGetPhysicalDeviceExternalBufferProperties,
+        vkGetPhysicalDeviceExternalBufferProperties,
+        vkGetPhysicalDeviceExternalBufferPropertiesUnsafe,
+        vkGetPhysicalDeviceExternalBufferPropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
+        pattern VK_LUID_SIZE, -- ** Promoted from VK_KHR_external_memory
+                              module Graphics.Vulkan.Types.Struct.Export,
+        module Graphics.Vulkan.Types.Enum.SharingMode,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
+        pattern VK_ERROR_INVALID_EXTERNAL_HANDLE,
+        pattern VK_QUEUE_FAMILY_EXTERNAL,
+        -- ** Promoted from VK_KHR_external_fence_capabilities
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceExternalFenceProperties,
+        pattern VkGetPhysicalDeviceExternalFenceProperties,
+        HS_vkGetPhysicalDeviceExternalFenceProperties,
+        PFN_vkGetPhysicalDeviceExternalFenceProperties,
+        vkGetPhysicalDeviceExternalFenceProperties,
+        vkGetPhysicalDeviceExternalFencePropertiesUnsafe,
+        vkGetPhysicalDeviceExternalFencePropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+        -- ** Promoted from VK_KHR_external_fence
+        module Graphics.Vulkan.Types.Enum.Fence,
+        module Graphics.Vulkan.Types.Struct.Fence,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+        -- ** Promoted from VK_KHR_external_semaphore
+        module Graphics.Vulkan.Types.Struct.Semaphore,
+        module Graphics.Vulkan.Types.Enum.SemaphoreImportFlag,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
+        -- ** Promoted from VK_KHR_external_semaphore_capabilities
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceExternalSemaphoreProperties,
+        pattern VkGetPhysicalDeviceExternalSemaphoreProperties,
+        HS_vkGetPhysicalDeviceExternalSemaphoreProperties,
+        PFN_vkGetPhysicalDeviceExternalSemaphoreProperties,
+        vkGetPhysicalDeviceExternalSemaphoreProperties,
+        vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe,
+        vkGetPhysicalDeviceExternalSemaphorePropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+        -- ** Promoted from VK_KHR_maintenance3
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        VkGetDescriptorSetLayoutSupport,
+        pattern VkGetDescriptorSetLayoutSupport,
+        HS_vkGetDescriptorSetLayoutSupport,
+        PFN_vkGetDescriptorSetLayoutSupport,
+        vkGetDescriptorSetLayoutSupport,
+        vkGetDescriptorSetLayoutSupportUnsafe,
+        vkGetDescriptorSetLayoutSupportSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+        -- ** Promoted from VK_KHR_shader_draw_parameters, with a feature support query added
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES)
+       where
+import           GHC.Ptr                                                     (Ptr (..))
+import           Graphics.Vulkan.Constants                                   (pattern VK_LUID_SIZE,
+                                                                              pattern VK_MAX_DEVICE_GROUP_SIZE,
+                                                                              pattern VK_QUEUE_FAMILY_EXTERNAL)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Proc
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.AccessFlags
+import           Graphics.Vulkan.Types.Enum.Attachment
+import           Graphics.Vulkan.Types.Enum.BorderColor
+import           Graphics.Vulkan.Types.Enum.Buffer
+import           Graphics.Vulkan.Types.Enum.ChromaLocation
+import           Graphics.Vulkan.Types.Enum.Command
+import           Graphics.Vulkan.Types.Enum.CompareOp
+import           Graphics.Vulkan.Types.Enum.ComponentSwizzle
+import           Graphics.Vulkan.Types.Enum.DependencyFlags
+import           Graphics.Vulkan.Types.Enum.Descriptor
+import           Graphics.Vulkan.Types.Enum.Device
+import           Graphics.Vulkan.Types.Enum.External
+import           Graphics.Vulkan.Types.Enum.Fence
+import           Graphics.Vulkan.Types.Enum.Filter
+import           Graphics.Vulkan.Types.Enum.Format
+import           Graphics.Vulkan.Types.Enum.Image
+import           Graphics.Vulkan.Types.Enum.InternalAllocationType
+import           Graphics.Vulkan.Types.Enum.Memory
+import           Graphics.Vulkan.Types.Enum.Object                           (VkObjectType (..))
+import           Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag
+import           Graphics.Vulkan.Types.Enum.PhysicalDeviceType
+import           Graphics.Vulkan.Types.Enum.Pipeline
+import           Graphics.Vulkan.Types.Enum.PointClippingBehavior
+import           Graphics.Vulkan.Types.Enum.Query
+import           Graphics.Vulkan.Types.Enum.Queue
+import           Graphics.Vulkan.Types.Enum.Result
+import           Graphics.Vulkan.Types.Enum.SampleCountFlags
+import           Graphics.Vulkan.Types.Enum.Sampler
+import           Graphics.Vulkan.Types.Enum.SemaphoreImportFlag
+import           Graphics.Vulkan.Types.Enum.Shader
+import           Graphics.Vulkan.Types.Enum.SharingMode
+import           Graphics.Vulkan.Types.Enum.Sparse
+import           Graphics.Vulkan.Types.Enum.StructureType
+import           Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags
+import           Graphics.Vulkan.Types.Enum.Subpass
+import           Graphics.Vulkan.Types.Enum.SystemAllocationScope
+import           Graphics.Vulkan.Types.Enum.TessellationDomainOrigin
+import           Graphics.Vulkan.Types.Funcpointers
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.AllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.Attachment
+import           Graphics.Vulkan.Types.Struct.Bind
+import           Graphics.Vulkan.Types.Struct.Buffer
+import           Graphics.Vulkan.Types.Struct.Clear
+import           Graphics.Vulkan.Types.Struct.Command
+import           Graphics.Vulkan.Types.Struct.ComponentMapping
+import           Graphics.Vulkan.Types.Struct.Descriptor
+import           Graphics.Vulkan.Types.Struct.Device
+import           Graphics.Vulkan.Types.Struct.Export
+import           Graphics.Vulkan.Types.Struct.Extent
+import           Graphics.Vulkan.Types.Struct.External
+import           Graphics.Vulkan.Types.Struct.Fence
+import           Graphics.Vulkan.Types.Struct.FormatProperties
+import           Graphics.Vulkan.Types.Struct.Image
+import           Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference
+import           Graphics.Vulkan.Types.Struct.Memory
+import           Graphics.Vulkan.Types.Struct.Offset
+import           Graphics.Vulkan.Types.Struct.PhysicalDevice
+import           Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
+import           Graphics.Vulkan.Types.Struct.Pipeline
+import           Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo
+import           Graphics.Vulkan.Types.Struct.QueueFamilyProperties
+import           Graphics.Vulkan.Types.Struct.Rect
+import           Graphics.Vulkan.Types.Struct.RenderPass
+import           Graphics.Vulkan.Types.Struct.Sampler
+import           Graphics.Vulkan.Types.Struct.Semaphore
+import           Graphics.Vulkan.Types.Struct.Sparse
+import           Graphics.Vulkan.Types.Struct.SubmitInfo
+import           Graphics.Vulkan.Types.Struct.Subpass
+import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+
+pattern VkEnumerateInstanceVersion :: CString
+
+pattern VkEnumerateInstanceVersion <-
+        (is_VkEnumerateInstanceVersion -> True)
+  where VkEnumerateInstanceVersion = _VkEnumerateInstanceVersion
+
+{-# INLINE _VkEnumerateInstanceVersion #-}
+
+_VkEnumerateInstanceVersion :: CString
+_VkEnumerateInstanceVersion = Ptr "vkEnumerateInstanceVersion\NUL"#
+
+{-# INLINE is_VkEnumerateInstanceVersion #-}
+
+is_VkEnumerateInstanceVersion :: CString -> Bool
+is_VkEnumerateInstanceVersion
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceVersion
+
+type VkEnumerateInstanceVersion = "vkEnumerateInstanceVersion"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
+--           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersionUnsafe :: Ptr Word32 -- ^ pApiVersion
+                                                              -> IO VkResult
+
+#else
+vkEnumerateInstanceVersionUnsafe :: Ptr Word32 -- ^ pApiVersion
+                                               -> IO VkResult
+vkEnumerateInstanceVersionUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateInstanceVersion)
+
+{-# NOINLINE vkEnumerateInstanceVersionUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
+--           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                                            -> IO VkResult
+
+#else
+vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                             -> IO VkResult
+vkEnumerateInstanceVersionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceVersion)
+
+{-# NOINLINE vkEnumerateInstanceVersionSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
+--           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
+--
+vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
+                                         -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateInstanceVersion = vkEnumerateInstanceVersionUnsafe
+#else
+vkEnumerateInstanceVersion = vkEnumerateInstanceVersionSafe
+
+#endif
+{-# INLINE vkEnumerateInstanceVersion #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkEnumerateInstanceVersion
+--   >     ( uint32_t* pApiVersion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+type HS_vkEnumerateInstanceVersion = Ptr Word32 -- ^ pApiVersion
+                                                -> IO VkResult
+
+type PFN_vkEnumerateInstanceVersion =
+     FunPtr HS_vkEnumerateInstanceVersion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceVersionUnsafe ::
+               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceVersionSafe ::
+               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
+
+instance VulkanProc "vkEnumerateInstanceVersion" where
+        type VkProcType "vkEnumerateInstanceVersion" =
+             HS_vkEnumerateInstanceVersion
+        vkProcSymbol = _VkEnumerateInstanceVersion
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkEnumerateInstanceVersionUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceVersionSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
+        VkStructureType 1000094000
+
+pattern VkBindBufferMemory2 :: CString
+
+pattern VkBindBufferMemory2 <- (is_VkBindBufferMemory2 -> True)
+  where VkBindBufferMemory2 = _VkBindBufferMemory2
+
+{-# INLINE _VkBindBufferMemory2 #-}
+
+_VkBindBufferMemory2 :: CString
+_VkBindBufferMemory2 = Ptr "vkBindBufferMemory2\NUL"#
+
+{-# INLINE is_VkBindBufferMemory2 #-}
+
+is_VkBindBufferMemory2 :: CString -> Bool
+is_VkBindBufferMemory2 = (EQ ==) . cmpCStrings _VkBindBufferMemory2
+
+type VkBindBufferMemory2 = "vkBindBufferMemory2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
+--           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkBindBufferMemory2"
+               vkBindBufferMemory2Unsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+#else
+vkBindBufferMemory2Unsafe ::
+                          VkDevice -- ^ device
+                                   -> Word32 -- ^ bindInfoCount
+                                             -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                           -> IO VkResult
+vkBindBufferMemory2Unsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindBufferMemory2)
+
+{-# NOINLINE vkBindBufferMemory2Unsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
+--           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkBindBufferMemory2"
+               vkBindBufferMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+#else
+vkBindBufferMemory2Safe ::
+                        VkDevice -- ^ device
+                                 -> Word32 -- ^ bindInfoCount
+                                           -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                         -> IO VkResult
+vkBindBufferMemory2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory2)
+
+{-# NOINLINE vkBindBufferMemory2Safe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
+--           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
+--
+vkBindBufferMemory2 ::
+                    VkDevice -- ^ device
+                             -> Word32 -- ^ bindInfoCount
+                                       -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                     -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkBindBufferMemory2 = vkBindBufferMemory2Unsafe
+#else
+vkBindBufferMemory2 = vkBindBufferMemory2Safe
+
+#endif
+{-# INLINE vkBindBufferMemory2 #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindBufferMemory2
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindBufferMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+type HS_vkBindBufferMemory2 =
+     VkDevice -- ^ device
+              -> Word32 -- ^ bindInfoCount
+                        -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                      -> IO VkResult
+
+type PFN_vkBindBufferMemory2 = FunPtr HS_vkBindBufferMemory2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindBufferMemory2Unsafe ::
+               PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
+
+foreign import ccall safe "dynamic" unwrapVkBindBufferMemory2Safe
+               :: PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
+
+instance VulkanProc "vkBindBufferMemory2" where
+        type VkProcType "vkBindBufferMemory2" = HS_vkBindBufferMemory2
+        vkProcSymbol = _VkBindBufferMemory2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemory2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindImageMemory2 :: CString
+
+pattern VkBindImageMemory2 <- (is_VkBindImageMemory2 -> True)
+  where VkBindImageMemory2 = _VkBindImageMemory2
+
+{-# INLINE _VkBindImageMemory2 #-}
+
+_VkBindImageMemory2 :: CString
+_VkBindImageMemory2 = Ptr "vkBindImageMemory2\NUL"#
+
+{-# INLINE is_VkBindImageMemory2 #-}
+
+is_VkBindImageMemory2 :: CString -> Bool
+is_VkBindImageMemory2 = (EQ ==) . cmpCStrings _VkBindImageMemory2
+
+type VkBindImageMemory2 = "vkBindImageMemory2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
+--           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkBindImageMemory2"
+               vkBindImageMemory2Unsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
+#else
+vkBindImageMemory2Unsafe ::
+                         VkDevice -- ^ device
+                                  -> Word32 -- ^ bindInfoCount
+                                            -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                         -> IO VkResult
+vkBindImageMemory2Unsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindImageMemory2)
+
+{-# NOINLINE vkBindImageMemory2Unsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
+--           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkBindImageMemory2"
+               vkBindImageMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
+#else
+vkBindImageMemory2Safe ::
+                       VkDevice -- ^ device
+                                -> Word32 -- ^ bindInfoCount
+                                          -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                       -> IO VkResult
+vkBindImageMemory2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory2)
+
+{-# NOINLINE vkBindImageMemory2Safe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
+--           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
+--
+vkBindImageMemory2 ::
+                   VkDevice -- ^ device
+                            -> Word32 -- ^ bindInfoCount
+                                      -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                   -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkBindImageMemory2 = vkBindImageMemory2Unsafe
+#else
+vkBindImageMemory2 = vkBindImageMemory2Safe
+
+#endif
+{-# INLINE vkBindImageMemory2 #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory2
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindImageMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+type HS_vkBindImageMemory2 =
+     VkDevice -- ^ device
+              -> Word32 -- ^ bindInfoCount
+                        -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                     -> IO VkResult
+
+type PFN_vkBindImageMemory2 = FunPtr HS_vkBindImageMemory2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindImageMemory2Unsafe ::
+               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
+
+foreign import ccall safe "dynamic" unwrapVkBindImageMemory2Safe ::
+               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
+
+instance VulkanProc "vkBindImageMemory2" where
+        type VkProcType "vkBindImageMemory2" = HS_vkBindImageMemory2
+        vkProcSymbol = _VkBindImageMemory2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkBindImageMemory2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkBindImageMemory2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO =
+        VkStructureType 1000157000
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO =
+        VkStructureType 1000157001
+
+-- | bitpos = @10@
+pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 1024
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES =
+        VkStructureType 1000083000
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS =
+        VkStructureType 1000127000
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO =
+        VkStructureType 1000127001
+
+pattern VkGetDeviceGroupPeerMemoryFeatures :: CString
+
+pattern VkGetDeviceGroupPeerMemoryFeatures <-
+        (is_VkGetDeviceGroupPeerMemoryFeatures -> True)
+  where VkGetDeviceGroupPeerMemoryFeatures
+          = _VkGetDeviceGroupPeerMemoryFeatures
+
+{-# INLINE _VkGetDeviceGroupPeerMemoryFeatures #-}
+
+_VkGetDeviceGroupPeerMemoryFeatures :: CString
+_VkGetDeviceGroupPeerMemoryFeatures
+  = Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#
+
+{-# INLINE is_VkGetDeviceGroupPeerMemoryFeatures #-}
+
+is_VkGetDeviceGroupPeerMemoryFeatures :: CString -> Bool
+is_VkGetDeviceGroupPeerMemoryFeatures
+  = (EQ ==) . cmpCStrings _VkGetDeviceGroupPeerMemoryFeatures
+
+type VkGetDeviceGroupPeerMemoryFeatures =
+     "vkGetDeviceGroupPeerMemoryFeatures"
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
+--           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+#else
+vkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
+                                         VkDevice -- ^ device
+                                                  ->
+                                           Word32 -- ^ heapIndex
+                                                  ->
+                                             Word32 -- ^ localDeviceIndex
+                                                    ->
+                                               Word32 -- ^ remoteDeviceIndex
+                                                      -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                      -> IO ()
+vkGetDeviceGroupPeerMemoryFeaturesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDeviceGroupPeerMemoryFeatures)
+
+{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
+--           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+#else
+vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         Word32 -- ^ heapIndex
+                                                ->
+                                           Word32 -- ^ localDeviceIndex
+                                                  -> Word32 -- ^ remoteDeviceIndex
+                                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                            -> IO ()
+vkGetDeviceGroupPeerMemoryFeaturesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceGroupPeerMemoryFeatures)
+
+{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesSafe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
+--           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
+--
+vkGetDeviceGroupPeerMemoryFeatures ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Word32 -- ^ heapIndex
+                                            ->
+                                       Word32 -- ^ localDeviceIndex
+                                              -> Word32 -- ^ remoteDeviceIndex
+                                                        -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                        -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceGroupPeerMemoryFeatures
+  = vkGetDeviceGroupPeerMemoryFeaturesUnsafe
+#else
+vkGetDeviceGroupPeerMemoryFeatures
+  = vkGetDeviceGroupPeerMemoryFeaturesSafe
+
+#endif
+{-# INLINE vkGetDeviceGroupPeerMemoryFeatures #-}
+
+-- | > void vkGetDeviceGroupPeerMemoryFeatures
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+type HS_vkGetDeviceGroupPeerMemoryFeatures =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ heapIndex
+              -> Word32 -- ^ localDeviceIndex
+                        -> Word32 -- ^ remoteDeviceIndex
+                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                  -> IO ()
+
+type PFN_vkGetDeviceGroupPeerMemoryFeatures =
+     FunPtr HS_vkGetDeviceGroupPeerMemoryFeatures
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
+               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
+                 HS_vkGetDeviceGroupPeerMemoryFeatures
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
+                 HS_vkGetDeviceGroupPeerMemoryFeatures
+
+instance VulkanProc "vkGetDeviceGroupPeerMemoryFeatures" where
+        type VkProcType "vkGetDeviceGroupPeerMemoryFeatures" =
+             HS_vkGetDeviceGroupPeerMemoryFeatures
+        vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeatures
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDeviceGroupPeerMemoryFeaturesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDeviceMask :: CString
+
+pattern VkCmdSetDeviceMask <- (is_VkCmdSetDeviceMask -> True)
+  where VkCmdSetDeviceMask = _VkCmdSetDeviceMask
+
+{-# INLINE _VkCmdSetDeviceMask #-}
+
+_VkCmdSetDeviceMask :: CString
+_VkCmdSetDeviceMask = Ptr "vkCmdSetDeviceMask\NUL"#
+
+{-# INLINE is_VkCmdSetDeviceMask #-}
+
+is_VkCmdSetDeviceMask :: CString -> Bool
+is_VkCmdSetDeviceMask = (EQ ==) . cmpCStrings _VkCmdSetDeviceMask
+
+type VkCmdSetDeviceMask = "vkCmdSetDeviceMask"
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
+--           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                                           -> Word32 -- ^ deviceMask
+                                                                     -> IO ()
+
+#else
+vkCmdSetDeviceMaskUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                            -> Word32 -- ^ deviceMask
+                                                      -> IO ()
+vkCmdSetDeviceMaskUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDeviceMask)
+
+{-# NOINLINE vkCmdSetDeviceMaskUnsafe #-}
+#endif
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
+--           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> Word32 -- ^ deviceMask
+                                                                   -> IO ()
+
+#else
+vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> Word32 -- ^ deviceMask
+                                                    -> IO ()
+vkCmdSetDeviceMaskSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDeviceMask)
+
+{-# NOINLINE vkCmdSetDeviceMaskSafe #-}
+#endif
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
+--           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
+--
+vkCmdSetDeviceMask :: VkCommandBuffer -- ^ commandBuffer
+                                      -> Word32 -- ^ deviceMask
+                                                -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetDeviceMask = vkCmdSetDeviceMaskUnsafe
+#else
+vkCmdSetDeviceMask = vkCmdSetDeviceMaskSafe
+
+#endif
+{-# INLINE vkCmdSetDeviceMask #-}
+
+-- | Queues: 'graphics', 'compute', 'transfer'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDeviceMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+type HS_vkCmdSetDeviceMask = VkCommandBuffer -- ^ commandBuffer
+                                             -> Word32 -- ^ deviceMask
+                                                       -> IO ()
+
+type PFN_vkCmdSetDeviceMask = FunPtr HS_vkCmdSetDeviceMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetDeviceMaskUnsafe ::
+               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskSafe ::
+               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
+
+instance VulkanProc "vkCmdSetDeviceMask" where
+        type VkProcType "vkCmdSetDeviceMask" = HS_vkCmdSetDeviceMask
+        vkProcSymbol = _VkCmdSetDeviceMask
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDeviceMaskUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatchBase :: CString
+
+pattern VkCmdDispatchBase <- (is_VkCmdDispatchBase -> True)
+  where VkCmdDispatchBase = _VkCmdDispatchBase
+
+{-# INLINE _VkCmdDispatchBase #-}
+
+_VkCmdDispatchBase :: CString
+_VkCmdDispatchBase = Ptr "vkCmdDispatchBase\NUL"#
+
+{-# INLINE is_VkCmdDispatchBase #-}
+
+is_VkCmdDispatchBase :: CString -> Bool
+is_VkCmdDispatchBase = (EQ ==) . cmpCStrings _VkCmdDispatchBase
+
+type VkCmdDispatchBase = "vkCmdDispatchBase"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
+--           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCmdDispatchBase"
+               vkCmdDispatchBaseUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+#else
+vkCmdDispatchBaseUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          Word32 -- ^ baseGroupX
+                                 -> Word32 -- ^ baseGroupY
+                                           -> Word32 -- ^ baseGroupZ
+                                                     -> Word32 -- ^ groupCountX
+                                                               -> Word32 -- ^ groupCountY
+                                                                         -> Word32 -- ^ groupCountZ
+                                                                                   -> IO ()
+vkCmdDispatchBaseUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatchBase)
+
+{-# NOINLINE vkCmdDispatchBaseUnsafe #-}
+#endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
+--           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+#else
+vkCmdDispatchBaseSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ baseGroupX
+                               -> Word32 -- ^ baseGroupY
+                                         -> Word32 -- ^ baseGroupZ
+                                                   -> Word32 -- ^ groupCountX
+                                                             -> Word32 -- ^ groupCountY
+                                                                       -> Word32 -- ^ groupCountZ
+                                                                                 -> IO ()
+vkCmdDispatchBaseSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchBase)
+
+{-# NOINLINE vkCmdDispatchBaseSafe #-}
+#endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
+--           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
+--
+vkCmdDispatchBase ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    Word32 -- ^ baseGroupX
+                           -> Word32 -- ^ baseGroupY
+                                     -> Word32 -- ^ baseGroupZ
+                                               -> Word32 -- ^ groupCountX
+                                                         -> Word32 -- ^ groupCountY
+                                                                   -> Word32 -- ^ groupCountZ
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkCmdDispatchBase = vkCmdDispatchBaseUnsafe
+#else
+vkCmdDispatchBase = vkCmdDispatchBaseSafe
+
+#endif
+{-# INLINE vkCmdDispatchBase #-}
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdDispatchBase
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t baseGroupX
+--   >     , uint32_t baseGroupY
+--   >     , uint32_t baseGroupZ
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+type HS_vkCmdDispatchBase =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ baseGroupX
+              -> Word32 -- ^ baseGroupY
+                        -> Word32 -- ^ baseGroupZ
+                                  -> Word32 -- ^ groupCountX
+                                            -> Word32 -- ^ groupCountY
+                                                      -> Word32 -- ^ groupCountZ
+                                                                -> IO ()
+
+type PFN_vkCmdDispatchBase = FunPtr HS_vkCmdDispatchBase
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBaseUnsafe
+               :: PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseSafe ::
+               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
+
+instance VulkanProc "vkCmdDispatchBase" where
+        type VkProcType "vkCmdDispatchBase" = HS_vkCmdDispatchBase
+        vkProcSymbol = _VkCmdDispatchBase
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchBaseUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO =
+        VkStructureType 1000060000
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO =
+        VkStructureType 1000060003
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO =
+        VkStructureType 1000060004
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO =
+        VkStructureType 1000060005
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO =
+        VkStructureType 1000060006
+
+-- | bitpos = @3@
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ::
+        VkPipelineCreateFlagBits
+
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
+        VkPipelineCreateFlagBits 8
+
+-- | bitpos = @4@
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
+        VkPipelineCreateFlagBits
+
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
+        VkPipelineCreateFlagBits 16
+
+-- | Dependency is across devices
+--
+--   bitpos = @2@
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits
+
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 4
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO =
+        VkStructureType 1000060013
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO =
+        VkStructureType 1000060014
+
+-- | Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image
+--
+--   bitpos = @6@
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
+        VkImageCreateFlagBits 64
+
+pattern VkEnumeratePhysicalDeviceGroups :: CString
+
+pattern VkEnumeratePhysicalDeviceGroups <-
+        (is_VkEnumeratePhysicalDeviceGroups -> True)
+  where VkEnumeratePhysicalDeviceGroups
+          = _VkEnumeratePhysicalDeviceGroups
+
+{-# INLINE _VkEnumeratePhysicalDeviceGroups #-}
+
+_VkEnumeratePhysicalDeviceGroups :: CString
+_VkEnumeratePhysicalDeviceGroups
+  = Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#
+
+{-# INLINE is_VkEnumeratePhysicalDeviceGroups #-}
+
+is_VkEnumeratePhysicalDeviceGroups :: CString -> Bool
+is_VkEnumeratePhysicalDeviceGroups
+  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDeviceGroups
+
+type VkEnumeratePhysicalDeviceGroups =
+     "vkEnumeratePhysicalDeviceGroups"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
+--           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsUnsafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+#else
+vkEnumeratePhysicalDeviceGroupsUnsafe ::
+                                      VkInstance -- ^ instance
+                                                 ->
+                                        Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                                   ->
+                                          Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                              -> IO VkResult
+vkEnumeratePhysicalDeviceGroupsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumeratePhysicalDeviceGroups)
+
+{-# NOINLINE vkEnumeratePhysicalDeviceGroupsUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
+--           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+#else
+vkEnumeratePhysicalDeviceGroupsSafe ::
+                                    VkInstance -- ^ instance
+                                               ->
+                                      Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                                 ->
+                                        Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                            -> IO VkResult
+vkEnumeratePhysicalDeviceGroupsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumeratePhysicalDeviceGroups)
+
+{-# NOINLINE vkEnumeratePhysicalDeviceGroupsSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
+--           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
+--
+vkEnumeratePhysicalDeviceGroups ::
+                                VkInstance -- ^ instance
+                                           ->
+                                  Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                             -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                                    -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkEnumeratePhysicalDeviceGroups
+  = vkEnumeratePhysicalDeviceGroupsUnsafe
+#else
+vkEnumeratePhysicalDeviceGroups
+  = vkEnumeratePhysicalDeviceGroupsSafe
+
+#endif
+{-# INLINE vkEnumeratePhysicalDeviceGroups #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkEnumeratePhysicalDeviceGroups
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceGroupCount
+--   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+type HS_vkEnumeratePhysicalDeviceGroups =
+     VkInstance -- ^ instance
+                ->
+       Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                  -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                         -> IO VkResult
+
+type PFN_vkEnumeratePhysicalDeviceGroups =
+     FunPtr HS_vkEnumeratePhysicalDeviceGroups
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroupsUnsafe ::
+               PFN_vkEnumeratePhysicalDeviceGroups ->
+                 HS_vkEnumeratePhysicalDeviceGroups
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroupsSafe ::
+               PFN_vkEnumeratePhysicalDeviceGroups ->
+                 HS_vkEnumeratePhysicalDeviceGroups
+
+instance VulkanProc "vkEnumeratePhysicalDeviceGroups" where
+        type VkProcType "vkEnumeratePhysicalDeviceGroups" =
+             HS_vkEnumeratePhysicalDeviceGroups
+        vkProcSymbol = _VkEnumeratePhysicalDeviceGroups
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkEnumeratePhysicalDeviceGroupsUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES =
+        VkStructureType 1000070000
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO =
+        VkStructureType 1000070001
+
+-- | If set, heap allocations allocate multiple instances by default
+--
+--   bitpos = @1@
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapFlagBits
+
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 2
+
+pattern VkGetImageMemoryRequirements2 :: CString
+
+pattern VkGetImageMemoryRequirements2 <-
+        (is_VkGetImageMemoryRequirements2 -> True)
+  where VkGetImageMemoryRequirements2
+          = _VkGetImageMemoryRequirements2
+
+{-# INLINE _VkGetImageMemoryRequirements2 #-}
+
+_VkGetImageMemoryRequirements2 :: CString
+_VkGetImageMemoryRequirements2
+  = Ptr "vkGetImageMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetImageMemoryRequirements2 #-}
+
+is_VkGetImageMemoryRequirements2 :: CString -> Bool
+is_VkGetImageMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements2
+
+type VkGetImageMemoryRequirements2 =
+     "vkGetImageMemoryRequirements2"
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
+--           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2Unsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetImageMemoryRequirements2Unsafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                         ->
+                                        Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                  -> IO ()
+vkGetImageMemoryRequirements2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageMemoryRequirements2)
+
+{-# NOINLINE vkGetImageMemoryRequirements2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
+--           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetImageMemoryRequirements2Safe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                       ->
+                                      Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                -> IO ()
+vkGetImageMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageMemoryRequirements2)
+
+{-# NOINLINE vkGetImageMemoryRequirements2Safe #-}
+#endif
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
+--           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
+--
+vkGetImageMemoryRequirements2 ::
+                              VkDevice -- ^ device
+                                       ->
+                                Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                   ->
+                                  Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                            -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2Unsafe
+#else
+vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2Safe
+
+#endif
+{-# INLINE vkGetImageMemoryRequirements2 #-}
+
+-- | > void vkGetImageMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetImageMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                          ->
+         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                   -> IO ()
+
+type PFN_vkGetImageMemoryRequirements2 =
+     FunPtr HS_vkGetImageMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageMemoryRequirements2Unsafe ::
+               PFN_vkGetImageMemoryRequirements2 ->
+                 HS_vkGetImageMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirements2Safe ::
+               PFN_vkGetImageMemoryRequirements2 ->
+                 HS_vkGetImageMemoryRequirements2
+
+instance VulkanProc "vkGetImageMemoryRequirements2" where
+        type VkProcType "vkGetImageMemoryRequirements2" =
+             HS_vkGetImageMemoryRequirements2
+        vkProcSymbol = _VkGetImageMemoryRequirements2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetImageMemoryRequirements2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetBufferMemoryRequirements2 :: CString
+
+pattern VkGetBufferMemoryRequirements2 <-
+        (is_VkGetBufferMemoryRequirements2 -> True)
+  where VkGetBufferMemoryRequirements2
+          = _VkGetBufferMemoryRequirements2
+
+{-# INLINE _VkGetBufferMemoryRequirements2 #-}
+
+_VkGetBufferMemoryRequirements2 :: CString
+_VkGetBufferMemoryRequirements2
+  = Ptr "vkGetBufferMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetBufferMemoryRequirements2 #-}
+
+is_VkGetBufferMemoryRequirements2 :: CString -> Bool
+is_VkGetBufferMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements2
+
+type VkGetBufferMemoryRequirements2 =
+     "vkGetBufferMemoryRequirements2"
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
+--           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2Unsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetBufferMemoryRequirements2Unsafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                           ->
+                                         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                   -> IO ()
+vkGetBufferMemoryRequirements2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetBufferMemoryRequirements2)
+
+{-# NOINLINE vkGetBufferMemoryRequirements2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
+--           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetBufferMemoryRequirements2Safe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                         ->
+                                       Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                 -> IO ()
+vkGetBufferMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetBufferMemoryRequirements2)
+
+{-# NOINLINE vkGetBufferMemoryRequirements2Safe #-}
+#endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
+--           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
+--
+vkGetBufferMemoryRequirements2 ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                     ->
+                                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetBufferMemoryRequirements2
+  = vkGetBufferMemoryRequirements2Unsafe
+#else
+vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2Safe
+
+#endif
+{-# INLINE vkGetBufferMemoryRequirements2 #-}
+
+-- | > void vkGetBufferMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetBufferMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                           ->
+         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                   -> IO ()
+
+type PFN_vkGetBufferMemoryRequirements2 =
+     FunPtr HS_vkGetBufferMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2Unsafe ::
+               PFN_vkGetBufferMemoryRequirements2 ->
+                 HS_vkGetBufferMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2Safe ::
+               PFN_vkGetBufferMemoryRequirements2 ->
+                 HS_vkGetBufferMemoryRequirements2
+
+instance VulkanProc "vkGetBufferMemoryRequirements2" where
+        type VkProcType "vkGetBufferMemoryRequirements2" =
+             HS_vkGetBufferMemoryRequirements2
+        vkProcSymbol = _VkGetBufferMemoryRequirements2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetBufferMemoryRequirements2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSparseMemoryRequirements2 :: CString
+
+pattern VkGetImageSparseMemoryRequirements2 <-
+        (is_VkGetImageSparseMemoryRequirements2 -> True)
+  where VkGetImageSparseMemoryRequirements2
+          = _VkGetImageSparseMemoryRequirements2
+
+{-# INLINE _VkGetImageSparseMemoryRequirements2 #-}
+
+_VkGetImageSparseMemoryRequirements2 :: CString
+_VkGetImageSparseMemoryRequirements2
+  = Ptr "vkGetImageSparseMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetImageSparseMemoryRequirements2 #-}
+
+is_VkGetImageSparseMemoryRequirements2 :: CString -> Bool
+is_VkGetImageSparseMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements2
+
+type VkGetImageSparseMemoryRequirements2 =
+     "vkGetImageSparseMemoryRequirements2"
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
+--           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2Unsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+#else
+vkGetImageSparseMemoryRequirements2Unsafe ::
+                                          VkDevice -- ^ device
+                                                   ->
+                                            Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                                     ->
+                                              Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                         ->
+                                                Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                     -> IO ()
+vkGetImageSparseMemoryRequirements2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageSparseMemoryRequirements2)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
+--           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+#else
+vkGetImageSparseMemoryRequirements2Safe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                                   ->
+                                            Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                       ->
+                                              Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageSparseMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSparseMemoryRequirements2)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements2Safe #-}
+#endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
+--           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
+--
+vkGetImageSparseMemoryRequirements2 ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                               ->
+                                        Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                   -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                           -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetImageSparseMemoryRequirements2
+  = vkGetImageSparseMemoryRequirements2Unsafe
+#else
+vkGetImageSparseMemoryRequirements2
+  = vkGetImageSparseMemoryRequirements2Safe
+
+#endif
+{-# INLINE vkGetImageSparseMemoryRequirements2 #-}
+
+-- | > void vkGetImageSparseMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetImageSparseMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                ->
+         Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                    -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                            -> IO ()
+
+type PFN_vkGetImageSparseMemoryRequirements2 =
+     FunPtr HS_vkGetImageSparseMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2Unsafe ::
+               PFN_vkGetImageSparseMemoryRequirements2 ->
+                 HS_vkGetImageSparseMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2Safe ::
+               PFN_vkGetImageSparseMemoryRequirements2 ->
+                 HS_vkGetImageSparseMemoryRequirements2
+
+instance VulkanProc "vkGetImageSparseMemoryRequirements2" where
+        type VkProcType "vkGetImageSparseMemoryRequirements2" =
+             HS_vkGetImageSparseMemoryRequirements2
+        vkProcSymbol = _VkGetImageSparseMemoryRequirements2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetImageSparseMemoryRequirements2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirements2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146000
+
+pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146001
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146002
+
+pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 =
+        VkStructureType 1000146003
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 =
+        VkStructureType 1000146004
+
+pattern VkGetPhysicalDeviceFeatures2 :: CString
+
+pattern VkGetPhysicalDeviceFeatures2 <-
+        (is_VkGetPhysicalDeviceFeatures2 -> True)
+  where VkGetPhysicalDeviceFeatures2 = _VkGetPhysicalDeviceFeatures2
+
+{-# INLINE _VkGetPhysicalDeviceFeatures2 #-}
+
+_VkGetPhysicalDeviceFeatures2 :: CString
+_VkGetPhysicalDeviceFeatures2
+  = Ptr "vkGetPhysicalDeviceFeatures2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceFeatures2 #-}
+
+is_VkGetPhysicalDeviceFeatures2 :: CString -> Bool
+is_VkGetPhysicalDeviceFeatures2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures2
+
+type VkGetPhysicalDeviceFeatures2 = "vkGetPhysicalDeviceFeatures2"
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
+--           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceFeatures2Unsafe ::
+                                   VkPhysicalDevice -- ^ physicalDevice
+                                                    -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                                     -> IO ()
+vkGetPhysicalDeviceFeatures2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFeatures2)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
+--           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceFeatures2Safe ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                                   -> IO ()
+vkGetPhysicalDeviceFeatures2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFeatures2)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
+--           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
+--
+vkGetPhysicalDeviceFeatures2 ::
+                             VkPhysicalDevice -- ^ physicalDevice
+                                              -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                               -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2Unsafe
+#else
+vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceFeatures2 #-}
+
+-- | > void vkGetPhysicalDeviceFeatures2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFeatures2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                       -> IO ()
+
+type PFN_vkGetPhysicalDeviceFeatures2 =
+     FunPtr HS_vkGetPhysicalDeviceFeatures2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2Unsafe ::
+               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2Safe ::
+               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
+
+instance VulkanProc "vkGetPhysicalDeviceFeatures2" where
+        type VkProcType "vkGetPhysicalDeviceFeatures2" =
+             HS_vkGetPhysicalDeviceFeatures2
+        vkProcSymbol = _VkGetPhysicalDeviceFeatures2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeatures2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceProperties2 :: CString
+
+pattern VkGetPhysicalDeviceProperties2 <-
+        (is_VkGetPhysicalDeviceProperties2 -> True)
+  where VkGetPhysicalDeviceProperties2
+          = _VkGetPhysicalDeviceProperties2
+
+{-# INLINE _VkGetPhysicalDeviceProperties2 #-}
+
+_VkGetPhysicalDeviceProperties2 :: CString
+_VkGetPhysicalDeviceProperties2
+  = Ptr "vkGetPhysicalDeviceProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceProperties2 #-}
+
+is_VkGetPhysicalDeviceProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties2
+
+type VkGetPhysicalDeviceProperties2 =
+     "vkGetPhysicalDeviceProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
+--           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+#else
+vkGetPhysicalDeviceProperties2Unsafe ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
+--           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+#else
+vkGetPhysicalDeviceProperties2Safe ::
+                                   VkPhysicalDevice -- ^ physicalDevice
+                                                    -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                       -> IO ()
+vkGetPhysicalDeviceProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
+--           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
+--
+vkGetPhysicalDeviceProperties2 ::
+                               VkPhysicalDevice -- ^ physicalDevice
+                                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                   -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceProperties2
+  = vkGetPhysicalDeviceProperties2Unsafe
+#else
+vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                         -> IO ()
+
+type PFN_vkGetPhysicalDeviceProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceProperties2 ->
+                 HS_vkGetPhysicalDeviceProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2Safe ::
+               PFN_vkGetPhysicalDeviceProperties2 ->
+                 HS_vkGetPhysicalDeviceProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceProperties2" where
+        type VkProcType "vkGetPhysicalDeviceProperties2" =
+             HS_vkGetPhysicalDeviceProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceProperties2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceFormatProperties2 <-
+        (is_VkGetPhysicalDeviceFormatProperties2 -> True)
+  where VkGetPhysicalDeviceFormatProperties2
+          = _VkGetPhysicalDeviceFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceFormatProperties2 #-}
+
+_VkGetPhysicalDeviceFormatProperties2 :: CString
+_VkGetPhysicalDeviceFormatProperties2
+  = Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceFormatProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceFormatProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties2
+
+type VkGetPhysicalDeviceFormatProperties2 =
+     "vkGetPhysicalDeviceFormatProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+#else
+vkGetPhysicalDeviceFormatProperties2Unsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             VkFormat -- ^ format
+                                                      -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceFormatProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+#else
+vkGetPhysicalDeviceFormatProperties2Safe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           VkFormat -- ^ format
+                                                    -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
+--
+vkGetPhysicalDeviceFormatProperties2 ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       VkFormat -- ^ format
+                                                -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                           -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFormatProperties2
+  = vkGetPhysicalDeviceFormatProperties2Unsafe
+#else
+vkGetPhysicalDeviceFormatProperties2
+  = vkGetPhysicalDeviceFormatProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceFormatProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties2* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> VkFormat -- ^ format
+                                  -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                             -> IO ()
+
+type PFN_vkGetPhysicalDeviceFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceFormatProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceFormatProperties2" where
+        type VkProcType "vkGetPhysicalDeviceFormatProperties2" =
+             HS_vkGetPhysicalDeviceFormatProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceFormatProperties2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceFormatProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceImageFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceImageFormatProperties2 <-
+        (is_VkGetPhysicalDeviceImageFormatProperties2 -> True)
+  where VkGetPhysicalDeviceImageFormatProperties2
+          = _VkGetPhysicalDeviceImageFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceImageFormatProperties2 #-}
+
+_VkGetPhysicalDeviceImageFormatProperties2 :: CString
+_VkGetPhysicalDeviceImageFormatProperties2
+  = Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceImageFormatProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceImageFormatProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties2
+
+type VkGetPhysicalDeviceImageFormatProperties2 =
+     "vkGetPhysicalDeviceImageFormatProperties2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+#else
+vkGetPhysicalDeviceImageFormatProperties2Unsafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                       ->
+                                                    Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                                 -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Unsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+#else
+vkGetPhysicalDeviceImageFormatProperties2Safe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                     ->
+                                                  Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                               -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Safe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
+--
+vkGetPhysicalDeviceImageFormatProperties2 ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                 ->
+                                              Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceImageFormatProperties2
+  = vkGetPhysicalDeviceImageFormatProperties2Unsafe
+#else
+vkGetPhysicalDeviceImageFormatProperties2
+  = vkGetPhysicalDeviceImageFormatProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceImageFormatProperties2 #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+--   >     , VkImageFormatProperties2* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceImageFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                            ->
+         Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                      -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceImageFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2"
+         where
+        type VkProcType "vkGetPhysicalDeviceImageFormatProperties2" =
+             HS_vkGetPhysicalDeviceImageFormatProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceImageFormatProperties2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceImageFormatProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties2 <-
+        (is_VkGetPhysicalDeviceQueueFamilyProperties2 -> True)
+  where VkGetPhysicalDeviceQueueFamilyProperties2
+          = _VkGetPhysicalDeviceQueueFamilyProperties2
+
+{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
+_VkGetPhysicalDeviceQueueFamilyProperties2
+  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+is_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceQueueFamilyProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties2
+
+type VkGetPhysicalDeviceQueueFamilyProperties2 =
+     "vkGetPhysicalDeviceQueueFamilyProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                             ->
+                                                    Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceQueueFamilyProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                           -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
+--
+vkGetPhysicalDeviceQueueFamilyProperties2 ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                       -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                       -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceQueueFamilyProperties2
+  = vkGetPhysicalDeviceQueueFamilyProperties2Unsafe
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2
+  = vkGetPhysicalDeviceQueueFamilyProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceQueueFamilyProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceQueueFamilyProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                  -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                  -> IO ()
+
+type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2"
+         where
+        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2" =
+             HS_vkGetPhysicalDeviceQueueFamilyProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceMemoryProperties2 :: CString
+
+pattern VkGetPhysicalDeviceMemoryProperties2 <-
+        (is_VkGetPhysicalDeviceMemoryProperties2 -> True)
+  where VkGetPhysicalDeviceMemoryProperties2
+          = _VkGetPhysicalDeviceMemoryProperties2
+
+{-# INLINE _VkGetPhysicalDeviceMemoryProperties2 #-}
+
+_VkGetPhysicalDeviceMemoryProperties2 :: CString
+_VkGetPhysicalDeviceMemoryProperties2
+  = Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceMemoryProperties2 #-}
+
+is_VkGetPhysicalDeviceMemoryProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceMemoryProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties2
+
+type VkGetPhysicalDeviceMemoryProperties2 =
+     "vkGetPhysicalDeviceMemoryProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
+--           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+#else
+vkGetPhysicalDeviceMemoryProperties2Unsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceMemoryProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceMemoryProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
+--           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+#else
+vkGetPhysicalDeviceMemoryProperties2Safe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceMemoryProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
+--           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
+--
+vkGetPhysicalDeviceMemoryProperties2 ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceMemoryProperties2
+  = vkGetPhysicalDeviceMemoryProperties2Unsafe
+#else
+vkGetPhysicalDeviceMemoryProperties2
+  = vkGetPhysicalDeviceMemoryProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceMemoryProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceMemoryProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceMemoryProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                               -> IO ()
+
+type PFN_vkGetPhysicalDeviceMemoryProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceMemoryProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2Safe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2" where
+        type VkProcType "vkGetPhysicalDeviceMemoryProperties2" =
+             HS_vkGetPhysicalDeviceMemoryProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceMemoryProperties2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceMemoryProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties2 <-
+        (is_VkGetPhysicalDeviceSparseImageFormatProperties2 -> True)
+  where VkGetPhysicalDeviceSparseImageFormatProperties2
+          = _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+_VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
+_VkGetPhysicalDeviceSparseImageFormatProperties2
+  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceSparseImageFormatProperties2 ::
+                                                   CString -> Bool
+is_VkGetPhysicalDeviceSparseImageFormatProperties2
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+type VkGetPhysicalDeviceSparseImageFormatProperties2 =
+     "vkGetPhysicalDeviceSparseImageFormatProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
+                                                      VkPhysicalDevice -- ^ physicalDevice
+                                                                       ->
+                                                        Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                          ->
+                                                          Ptr Word32 -- ^ pPropertyCount
+                                                                     ->
+                                                            Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                               ->
+                                                              IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+             #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+                                                    VkPhysicalDevice -- ^ physicalDevice
+                                                                     ->
+                                                      Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                                                                 ->
+                                                        Ptr Word32 -- ^ pPropertyCount
+                                                                   ->
+                                                          Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                             ->
+                                                            IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+             #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
+--
+vkGetPhysicalDeviceSparseImageFormatProperties2 ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                                                             ->
+                                                    Ptr Word32 -- ^ pPropertyCount
+                                                               ->
+                                                      Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                         -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSparseImageFormatProperties2
+  = vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2
+  = vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceSparseImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceSparseImageFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                  ->
+         Ptr Word32 -- ^ pPropertyCount
+                    -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                          -> IO ()
+
+type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+instance VulkanProc
+           "vkGetPhysicalDeviceSparseImageFormatProperties2"
+         where
+        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties2" =
+             HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 =
+        VkStructureType 1000059000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 =
+        VkStructureType 1000059001
+
+pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059002
+
+pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 =
+        VkStructureType 1000059004
+
+pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 =
+        VkStructureType 1000059005
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 =
+        VkStructureType 1000059006
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059007
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+        = VkStructureType 1000059008
+
+pattern VkTrimCommandPool :: CString
+
+pattern VkTrimCommandPool <- (is_VkTrimCommandPool -> True)
+  where VkTrimCommandPool = _VkTrimCommandPool
+
+{-# INLINE _VkTrimCommandPool #-}
+
+_VkTrimCommandPool :: CString
+_VkTrimCommandPool = Ptr "vkTrimCommandPool\NUL"#
+
+{-# INLINE is_VkTrimCommandPool #-}
+
+is_VkTrimCommandPool :: CString -> Bool
+is_VkTrimCommandPool = (EQ ==) . cmpCStrings _VkTrimCommandPool
+
+type VkTrimCommandPool = "vkTrimCommandPool"
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
+--           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkTrimCommandPool"
+               vkTrimCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolTrimFlags -- ^ flags
+                                                                   -> IO ()
+
+#else
+vkTrimCommandPoolUnsafe ::
+                        VkDevice -- ^ device
+                                 -> VkCommandPool -- ^ commandPool
+                                                  -> VkCommandPoolTrimFlags -- ^ flags
+                                                                            -> IO ()
+vkTrimCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkTrimCommandPool)
+
+{-# NOINLINE vkTrimCommandPoolUnsafe #-}
+#endif
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
+--           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
+               :: VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+
+#else
+vkTrimCommandPoolSafe ::
+                      VkDevice -- ^ device
+                               -> VkCommandPool -- ^ commandPool
+                                                -> VkCommandPoolTrimFlags -- ^ flags
+                                                                          -> IO ()
+vkTrimCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkTrimCommandPool)
+
+{-# NOINLINE vkTrimCommandPoolSafe #-}
+#endif
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
+--           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
+--
+vkTrimCommandPool ::
+                  VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkTrimCommandPool = vkTrimCommandPoolUnsafe
+#else
+vkTrimCommandPool = vkTrimCommandPoolSafe
+
+#endif
+{-# INLINE vkTrimCommandPool #-}
+
+-- | > void vkTrimCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolTrimFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+type HS_vkTrimCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> VkCommandPoolTrimFlags -- ^ flags
+                                                         -> IO ()
+
+type PFN_vkTrimCommandPool = FunPtr HS_vkTrimCommandPool
+
+foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPoolUnsafe
+               :: PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolSafe ::
+               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
+
+instance VulkanProc "vkTrimCommandPool" where
+        type VkProcType "vkTrimCommandPool" = HS_vkTrimCommandPool
+        vkProcSymbol = _VkTrimCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkTrimCommandPoolUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult
+
+pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)
+
+-- | Format can be used as the source image of image transfer commands
+--
+--   bitpos = @14@
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
+        VkFormatFeatureFlagBits 16384
+
+-- | Format can be used as the destination image of image transfer commands
+--
+--   bitpos = @15@
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
+        VkFormatFeatureFlagBits 32768
+
+-- | The 3D image can be viewed as a 2D or 2D array image
+--
+--   bitpos = @5@
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
+        VkImageCreateFlagBits 32
+
+-- | bitpos = @7@
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
+        VkImageCreateFlagBits 128
+
+-- | bitpos = @8@
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
+        VkImageCreateFlagBits 256
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+        = VkStructureType 1000117000
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+        = VkStructureType 1000117001
+
+pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO =
+        VkStructureType 1000117002
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+        = VkStructureType 1000117003
+
+pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
+        :: VkImageLayout
+
+pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
+        = VkImageLayout 1000117000
+
+pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
+        :: VkImageLayout
+
+pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
+        = VkImageLayout 1000117001
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO =
+        VkStructureType 1000053000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES =
+        VkStructureType 1000053001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES =
+        VkStructureType 1000053002
+
+-- | bitpos = @1@
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits
+
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 2
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        = VkStructureType 1000120000
+
+pattern VkGetDeviceQueue2 :: CString
+
+pattern VkGetDeviceQueue2 <- (is_VkGetDeviceQueue2 -> True)
+  where VkGetDeviceQueue2 = _VkGetDeviceQueue2
+
+{-# INLINE _VkGetDeviceQueue2 #-}
+
+_VkGetDeviceQueue2 :: CString
+_VkGetDeviceQueue2 = Ptr "vkGetDeviceQueue2\NUL"#
+
+{-# INLINE is_VkGetDeviceQueue2 #-}
+
+is_VkGetDeviceQueue2 :: CString -> Bool
+is_VkGetDeviceQueue2 = (EQ ==) . cmpCStrings _VkGetDeviceQueue2
+
+type VkGetDeviceQueue2 = "vkGetDeviceQueue2"
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
+--           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDeviceQueue2"
+               vkGetDeviceQueue2Unsafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                  -> Ptr VkQueue -- ^ pQueue
+                                                                 -> IO ()
+
+#else
+vkGetDeviceQueue2Unsafe ::
+                        VkDevice -- ^ device
+                                 -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                           -> Ptr VkQueue -- ^ pQueue
+                                                                          -> IO ()
+vkGetDeviceQueue2Unsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceQueue2)
+
+{-# NOINLINE vkGetDeviceQueue2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
+--           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
+               :: VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+
+#else
+vkGetDeviceQueue2Safe ::
+                      VkDevice -- ^ device
+                               -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                         -> Ptr VkQueue -- ^ pQueue
+                                                                        -> IO ()
+vkGetDeviceQueue2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue2)
+
+{-# NOINLINE vkGetDeviceQueue2Safe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
+--           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
+--
+vkGetDeviceQueue2 ::
+                  VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceQueue2 = vkGetDeviceQueue2Unsafe
+#else
+vkGetDeviceQueue2 = vkGetDeviceQueue2Safe
+
+#endif
+{-# INLINE vkGetDeviceQueue2 #-}
+
+-- | > void vkGetDeviceQueue2
+--   >     ( VkDevice device
+--   >     , const VkDeviceQueueInfo2* pQueueInfo
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+type HS_vkGetDeviceQueue2 =
+     VkDevice -- ^ device
+              -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                        -> Ptr VkQueue -- ^ pQueue
+                                                       -> IO ()
+
+type PFN_vkGetDeviceQueue2 = FunPtr HS_vkGetDeviceQueue2
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue2Unsafe
+               :: PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceQueue2Safe ::
+               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
+
+instance VulkanProc "vkGetDeviceQueue2" where
+        type VkProcType "vkGetDeviceQueue2" = HS_vkGetDeviceQueue2
+        vkProcSymbol = _VkGetDeviceQueue2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceQueue2Unsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueue2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO =
+        VkStructureType 1000145000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+        = VkStructureType 1000145001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+        = VkStructureType 1000145002
+
+pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 =
+        VkStructureType 1000145003
+
+-- | Queues may support protected operations
+--
+--   bitpos = @4@
+pattern VK_QUEUE_PROTECTED_BIT :: VkQueueFlagBits
+
+pattern VK_QUEUE_PROTECTED_BIT = VkQueueFlagBits 16
+
+-- | Queue is a protected-capable device queue
+--
+--   bitpos = @0@
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
+        VkDeviceQueueCreateFlagBits
+
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
+        VkDeviceQueueCreateFlagBits 1
+
+-- | Memory is protected
+--
+--   bitpos = @5@
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
+        VkMemoryPropertyFlagBits
+
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
+        VkMemoryPropertyFlagBits 32
+
+-- | Buffer requires protected memory
+--
+--   bitpos = @3@
+pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateFlagBits
+
+pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateFlagBits 8
+
+-- | Image requires protected memory
+--
+--   bitpos = @11@
+pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateFlagBits 2048
+
+-- | Command buffers allocated from pool are protected command buffers
+--
+--   bitpos = @2@
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
+        VkCommandPoolCreateFlagBits
+
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
+        VkCommandPoolCreateFlagBits 4
+
+pattern VkCreateSamplerYcbcrConversion :: CString
+
+pattern VkCreateSamplerYcbcrConversion <-
+        (is_VkCreateSamplerYcbcrConversion -> True)
+  where VkCreateSamplerYcbcrConversion
+          = _VkCreateSamplerYcbcrConversion
+
+{-# INLINE _VkCreateSamplerYcbcrConversion #-}
+
+_VkCreateSamplerYcbcrConversion :: CString
+_VkCreateSamplerYcbcrConversion
+  = Ptr "vkCreateSamplerYcbcrConversion\NUL"#
+
+{-# INLINE is_VkCreateSamplerYcbcrConversion #-}
+
+is_VkCreateSamplerYcbcrConversion :: CString -> Bool
+is_VkCreateSamplerYcbcrConversion
+  = (EQ ==) . cmpCStrings _VkCreateSamplerYcbcrConversion
+
+type VkCreateSamplerYcbcrConversion =
+     "vkCreateSamplerYcbcrConversion"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
+--           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+#else
+vkCreateSamplerYcbcrConversionUnsafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                              ->
+                                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   ->
+                                           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                        -> IO VkResult
+vkCreateSamplerYcbcrConversionUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateSamplerYcbcrConversion)
+
+{-# NOINLINE vkCreateSamplerYcbcrConversionUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
+--           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+#else
+vkCreateSamplerYcbcrConversionSafe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 ->
+                                         Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                      -> IO VkResult
+vkCreateSamplerYcbcrConversionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateSamplerYcbcrConversion)
+
+{-# NOINLINE vkCreateSamplerYcbcrConversionSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
+--           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
+--
+vkCreateSamplerYcbcrConversion ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                        ->
+                                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             ->
+                                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                  -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateSamplerYcbcrConversion
+  = vkCreateSamplerYcbcrConversionUnsafe
+#else
+vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionSafe
+
+#endif
+{-# INLINE vkCreateSamplerYcbcrConversion #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSamplerYcbcrConversion* pYcbcrConversion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+type HS_vkCreateSamplerYcbcrConversion =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                        -> IO VkResult
+
+type PFN_vkCreateSamplerYcbcrConversion =
+     FunPtr HS_vkCreateSamplerYcbcrConversion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversionUnsafe ::
+               PFN_vkCreateSamplerYcbcrConversion ->
+                 HS_vkCreateSamplerYcbcrConversion
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversionSafe ::
+               PFN_vkCreateSamplerYcbcrConversion ->
+                 HS_vkCreateSamplerYcbcrConversion
+
+instance VulkanProc "vkCreateSamplerYcbcrConversion" where
+        type VkProcType "vkCreateSamplerYcbcrConversion" =
+             HS_vkCreateSamplerYcbcrConversion
+        vkProcSymbol = _VkCreateSamplerYcbcrConversion
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCreateSamplerYcbcrConversionUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySamplerYcbcrConversion :: CString
+
+pattern VkDestroySamplerYcbcrConversion <-
+        (is_VkDestroySamplerYcbcrConversion -> True)
+  where VkDestroySamplerYcbcrConversion
+          = _VkDestroySamplerYcbcrConversion
+
+{-# INLINE _VkDestroySamplerYcbcrConversion #-}
+
+_VkDestroySamplerYcbcrConversion :: CString
+_VkDestroySamplerYcbcrConversion
+  = Ptr "vkDestroySamplerYcbcrConversion\NUL"#
+
+{-# INLINE is_VkDestroySamplerYcbcrConversion #-}
+
+is_VkDestroySamplerYcbcrConversion :: CString -> Bool
+is_VkDestroySamplerYcbcrConversion
+  = (EQ ==) . cmpCStrings _VkDestroySamplerYcbcrConversion
+
+type VkDestroySamplerYcbcrConversion =
+     "vkDestroySamplerYcbcrConversion"
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
+--           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
+vkDestroySamplerYcbcrConversionUnsafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                                 ->
+                                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroySamplerYcbcrConversionUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkDestroySamplerYcbcrConversion)
+
+{-# NOINLINE vkDestroySamplerYcbcrConversionUnsafe #-}
+#endif
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
+--           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
+vkDestroySamplerYcbcrConversionSafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                            -> IO ()
+vkDestroySamplerYcbcrConversionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroySamplerYcbcrConversion)
+
+{-# NOINLINE vkDestroySamplerYcbcrConversionSafe #-}
+#endif
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
+--           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
+--
+vkDestroySamplerYcbcrConversion ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkDestroySamplerYcbcrConversion
+  = vkDestroySamplerYcbcrConversionUnsafe
+#else
+vkDestroySamplerYcbcrConversion
+  = vkDestroySamplerYcbcrConversionSafe
+
+#endif
+{-# INLINE vkDestroySamplerYcbcrConversion #-}
+
+-- | > void vkDestroySamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+type HS_vkDestroySamplerYcbcrConversion =
+     VkDevice -- ^ device
+              ->
+       VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkDestroySamplerYcbcrConversion =
+     FunPtr HS_vkDestroySamplerYcbcrConversion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversionUnsafe ::
+               PFN_vkDestroySamplerYcbcrConversion ->
+                 HS_vkDestroySamplerYcbcrConversion
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversionSafe ::
+               PFN_vkDestroySamplerYcbcrConversion ->
+                 HS_vkDestroySamplerYcbcrConversion
+
+instance VulkanProc "vkDestroySamplerYcbcrConversion" where
+        type VkProcType "vkDestroySamplerYcbcrConversion" =
+             HS_vkDestroySamplerYcbcrConversion
+        vkProcSymbol = _VkDestroySamplerYcbcrConversion
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkDestroySamplerYcbcrConversionUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO =
+        VkStructureType 1000156000
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO =
+        VkStructureType 1000156001
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO =
+        VkStructureType 1000156002
+
+pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO =
+        VkStructureType 1000156003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+        = VkStructureType 1000156004
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+        = VkStructureType 1000156005
+
+pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType
+
+pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION =
+        VkObjectType 1000156000
+
+pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000
+
+pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006
+
+pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007
+
+pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008
+
+pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 =
+        VkFormat 1000156009
+
+pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 =
+        VkFormat 1000156010
+
+pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 =
+        VkFormat 1000156011
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156012
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156013
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156014
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156015
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 =
+        VkFormat 1000156016
+
+pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017
+
+pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018
+
+pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 =
+        VkFormat 1000156019
+
+pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 =
+        VkFormat 1000156020
+
+pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 =
+        VkFormat 1000156021
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156022
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156023
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156024
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156025
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 =
+        VkFormat 1000156026
+
+pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027
+
+pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM =
+        VkFormat 1000156029
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM =
+        VkFormat 1000156031
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM =
+        VkFormat 1000156033
+
+-- | bitpos = @4@
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectFlagBits 16
+
+-- | bitpos = @5@
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectFlagBits 32
+
+-- | bitpos = @6@
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectFlagBits 64
+
+-- | bitpos = @9@
+pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateFlagBits 512
+
+-- | Format can have midpoint rather than cosited chroma samples
+--
+--   bitpos = @17@
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureFlagBits 131072
+
+-- | Format can be used with linear filtering whilst color conversion is enabled
+--
+--   bitpos = @18@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        = VkFormatFeatureFlagBits 262144
+
+-- | Format can have different chroma, min and mag filters
+--
+--   bitpos = @19@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        = VkFormatFeatureFlagBits 524288
+
+-- | bitpos = @20@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        = VkFormatFeatureFlagBits 1048576
+
+-- | bitpos = @21@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        = VkFormatFeatureFlagBits 2097152
+
+-- | Format supports disjoint planes
+--
+--   bitpos = @22@
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
+        VkFormatFeatureFlagBits 4194304
+
+-- | Format can have cosited rather than midpoint chroma samples
+--
+--   bitpos = @23@
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureFlagBits 8388608
+
+pattern VkCreateDescriptorUpdateTemplate :: CString
+
+pattern VkCreateDescriptorUpdateTemplate <-
+        (is_VkCreateDescriptorUpdateTemplate -> True)
+  where VkCreateDescriptorUpdateTemplate
+          = _VkCreateDescriptorUpdateTemplate
+
+{-# INLINE _VkCreateDescriptorUpdateTemplate #-}
+
+_VkCreateDescriptorUpdateTemplate :: CString
+_VkCreateDescriptorUpdateTemplate
+  = Ptr "vkCreateDescriptorUpdateTemplate\NUL"#
+
+{-# INLINE is_VkCreateDescriptorUpdateTemplate #-}
+
+is_VkCreateDescriptorUpdateTemplate :: CString -> Bool
+is_VkCreateDescriptorUpdateTemplate
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorUpdateTemplate
+
+type VkCreateDescriptorUpdateTemplate =
+     "vkCreateDescriptorUpdateTemplate"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
+--           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+#else
+vkCreateDescriptorUpdateTemplateUnsafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                                  ->
+                                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     ->
+                                             Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                            -> IO VkResult
+vkCreateDescriptorUpdateTemplateUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateDescriptorUpdateTemplate)
+
+{-# NOINLINE vkCreateDescriptorUpdateTemplateUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
+--           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+#else
+vkCreateDescriptorUpdateTemplateSafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                                ->
+                                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   ->
+                                           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                          -> IO VkResult
+vkCreateDescriptorUpdateTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDescriptorUpdateTemplate)
+
+{-# NOINLINE vkCreateDescriptorUpdateTemplateSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
+--           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
+--
+vkCreateDescriptorUpdateTemplate ::
+                                 VkDevice -- ^ device
+                                          ->
+                                   Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               ->
+                                       Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                      -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateDescriptorUpdateTemplate
+  = vkCreateDescriptorUpdateTemplateUnsafe
+#else
+vkCreateDescriptorUpdateTemplate
+  = vkCreateDescriptorUpdateTemplateSafe
+
+#endif
+{-# INLINE vkCreateDescriptorUpdateTemplate #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+type HS_vkCreateDescriptorUpdateTemplate =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                          -> IO VkResult
+
+type PFN_vkCreateDescriptorUpdateTemplate =
+     FunPtr HS_vkCreateDescriptorUpdateTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplateUnsafe ::
+               PFN_vkCreateDescriptorUpdateTemplate ->
+                 HS_vkCreateDescriptorUpdateTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplateSafe ::
+               PFN_vkCreateDescriptorUpdateTemplate ->
+                 HS_vkCreateDescriptorUpdateTemplate
+
+instance VulkanProc "vkCreateDescriptorUpdateTemplate" where
+        type VkProcType "vkCreateDescriptorUpdateTemplate" =
+             HS_vkCreateDescriptorUpdateTemplate
+        vkProcSymbol = _VkCreateDescriptorUpdateTemplate
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCreateDescriptorUpdateTemplateUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorUpdateTemplate :: CString
+
+pattern VkDestroyDescriptorUpdateTemplate <-
+        (is_VkDestroyDescriptorUpdateTemplate -> True)
+  where VkDestroyDescriptorUpdateTemplate
+          = _VkDestroyDescriptorUpdateTemplate
+
+{-# INLINE _VkDestroyDescriptorUpdateTemplate #-}
+
+_VkDestroyDescriptorUpdateTemplate :: CString
+_VkDestroyDescriptorUpdateTemplate
+  = Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#
+
+{-# INLINE is_VkDestroyDescriptorUpdateTemplate #-}
+
+is_VkDestroyDescriptorUpdateTemplate :: CString -> Bool
+is_VkDestroyDescriptorUpdateTemplate
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorUpdateTemplate
+
+type VkDestroyDescriptorUpdateTemplate =
+     "vkDestroyDescriptorUpdateTemplate"
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
+--           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+#else
+vkDestroyDescriptorUpdateTemplateUnsafe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                     ->
+                                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyDescriptorUpdateTemplateUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkDestroyDescriptorUpdateTemplate)
+
+{-# NOINLINE vkDestroyDescriptorUpdateTemplateUnsafe #-}
+#endif
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
+--           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+#else
+vkDestroyDescriptorUpdateTemplateSafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                   ->
+                                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyDescriptorUpdateTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroyDescriptorUpdateTemplate)
+
+{-# NOINLINE vkDestroyDescriptorUpdateTemplateSafe #-}
+#endif
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
+--           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
+--
+vkDestroyDescriptorUpdateTemplate ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                            -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDescriptorUpdateTemplate
+  = vkDestroyDescriptorUpdateTemplateUnsafe
+#else
+vkDestroyDescriptorUpdateTemplate
+  = vkDestroyDescriptorUpdateTemplateSafe
+
+#endif
+{-# INLINE vkDestroyDescriptorUpdateTemplate #-}
+
+-- | > void vkDestroyDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+type HS_vkDestroyDescriptorUpdateTemplate =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyDescriptorUpdateTemplate =
+     FunPtr HS_vkDestroyDescriptorUpdateTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplateUnsafe ::
+               PFN_vkDestroyDescriptorUpdateTemplate ->
+                 HS_vkDestroyDescriptorUpdateTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplateSafe ::
+               PFN_vkDestroyDescriptorUpdateTemplate ->
+                 HS_vkDestroyDescriptorUpdateTemplate
+
+instance VulkanProc "vkDestroyDescriptorUpdateTemplate" where
+        type VkProcType "vkDestroyDescriptorUpdateTemplate" =
+             HS_vkDestroyDescriptorUpdateTemplate
+        vkProcSymbol = _VkDestroyDescriptorUpdateTemplate
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkDestroyDescriptorUpdateTemplateUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorUpdateTemplateSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUpdateDescriptorSetWithTemplate :: CString
+
+pattern VkUpdateDescriptorSetWithTemplate <-
+        (is_VkUpdateDescriptorSetWithTemplate -> True)
+  where VkUpdateDescriptorSetWithTemplate
+          = _VkUpdateDescriptorSetWithTemplate
+
+{-# INLINE _VkUpdateDescriptorSetWithTemplate #-}
+
+_VkUpdateDescriptorSetWithTemplate :: CString
+_VkUpdateDescriptorSetWithTemplate
+  = Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#
+
+{-# INLINE is_VkUpdateDescriptorSetWithTemplate #-}
+
+is_VkUpdateDescriptorSetWithTemplate :: CString -> Bool
+is_VkUpdateDescriptorSetWithTemplate
+  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSetWithTemplate
+
+type VkUpdateDescriptorSetWithTemplate =
+     "vkUpdateDescriptorSetWithTemplate"
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
+--           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+#else
+vkUpdateDescriptorSetWithTemplateUnsafe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          VkDescriptorSet -- ^ descriptorSet
+                                                          ->
+                                            VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                       -> Ptr Void -- ^ pData
+                                                                                   -> IO ()
+vkUpdateDescriptorSetWithTemplateUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkUpdateDescriptorSetWithTemplate)
+
+{-# NOINLINE vkUpdateDescriptorSetWithTemplateUnsafe #-}
+#endif
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
+--           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+#else
+vkUpdateDescriptorSetWithTemplateSafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkDescriptorSet -- ^ descriptorSet
+                                                        ->
+                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                     -> Ptr Void -- ^ pData
+                                                                                 -> IO ()
+vkUpdateDescriptorSetWithTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkUpdateDescriptorSetWithTemplate)
+
+{-# NOINLINE vkUpdateDescriptorSetWithTemplateSafe #-}
+#endif
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
+--           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
+--
+vkUpdateDescriptorSetWithTemplate ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkDescriptorSet -- ^ descriptorSet
+                                                    ->
+                                      VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                 -> Ptr Void -- ^ pData
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkUpdateDescriptorSetWithTemplate
+  = vkUpdateDescriptorSetWithTemplateUnsafe
+#else
+vkUpdateDescriptorSetWithTemplate
+  = vkUpdateDescriptorSetWithTemplateSafe
+
+#endif
+{-# INLINE vkUpdateDescriptorSetWithTemplate #-}
+
+-- | > void vkUpdateDescriptorSetWithTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorSet descriptorSet
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+type HS_vkUpdateDescriptorSetWithTemplate =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorSet -- ^ descriptorSet
+                       -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                     -> Ptr Void -- ^ pData
+                                                                 -> IO ()
+
+type PFN_vkUpdateDescriptorSetWithTemplate =
+     FunPtr HS_vkUpdateDescriptorSetWithTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplateUnsafe ::
+               PFN_vkUpdateDescriptorSetWithTemplate ->
+                 HS_vkUpdateDescriptorSetWithTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplateSafe ::
+               PFN_vkUpdateDescriptorSetWithTemplate ->
+                 HS_vkUpdateDescriptorSetWithTemplate
+
+instance VulkanProc "vkUpdateDescriptorSetWithTemplate" where
+        type VkProcType "vkUpdateDescriptorSetWithTemplate" =
+             HS_vkUpdateDescriptorSetWithTemplate
+        vkProcSymbol = _VkUpdateDescriptorSetWithTemplate
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkUpdateDescriptorSetWithTemplateUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetWithTemplateSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO =
+        VkStructureType 1000085000
+
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType
+
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE =
+        VkObjectType 1000085000
+
+pattern VkGetPhysicalDeviceExternalBufferProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalBufferProperties <-
+        (is_VkGetPhysicalDeviceExternalBufferProperties -> True)
+  where VkGetPhysicalDeviceExternalBufferProperties
+          = _VkGetPhysicalDeviceExternalBufferProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalBufferProperties #-}
+
+_VkGetPhysicalDeviceExternalBufferProperties :: CString
+_VkGetPhysicalDeviceExternalBufferProperties
+  = Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalBufferProperties #-}
+
+is_VkGetPhysicalDeviceExternalBufferProperties :: CString -> Bool
+is_VkGetPhysicalDeviceExternalBufferProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceExternalBufferProperties
+
+type VkGetPhysicalDeviceExternalBufferProperties =
+     "vkGetPhysicalDeviceExternalBufferProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
+                                                  VkPhysicalDevice -- ^ physicalDevice
+                                                                   ->
+                                                    Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                           ->
+                                                      Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                                     -> IO ()
+vkGetPhysicalDeviceExternalBufferPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalBufferProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                         ->
+                                                    Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceExternalBufferPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalBufferProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesSafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
+--
+vkGetPhysicalDeviceExternalBufferProperties ::
+                                            VkPhysicalDevice -- ^ physicalDevice
+                                                             ->
+                                              Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                     ->
+                                                Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                               -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceExternalBufferProperties
+  = vkGetPhysicalDeviceExternalBufferPropertiesUnsafe
+#else
+vkGetPhysicalDeviceExternalBufferProperties
+  = vkGetPhysicalDeviceExternalBufferPropertiesSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceExternalBufferProperties #-}
+
+-- | > void vkGetPhysicalDeviceExternalBufferProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalBufferProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                              ->
+         Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                        -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalBufferProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalBufferProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
+                 HS_vkGetPhysicalDeviceExternalBufferProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
+                 HS_vkGetPhysicalDeviceExternalBufferProperties
+
+instance VulkanProc "vkGetPhysicalDeviceExternalBufferProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceExternalBufferProperties" =
+             HS_vkGetPhysicalDeviceExternalBufferProperties
+        vkProcSymbol = _VkGetPhysicalDeviceExternalBufferProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+        = VkStructureType 1000071000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES =
+        VkStructureType 1000071001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO =
+        VkStructureType 1000071002
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES =
+        VkStructureType 1000071003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES =
+        VkStructureType 1000071004
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO =
+        VkStructureType 1000072000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO =
+        VkStructureType 1000072001
+
+pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO =
+        VkStructureType 1000072002
+
+pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult
+
+pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)
+
+pattern VkGetPhysicalDeviceExternalFenceProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalFenceProperties <-
+        (is_VkGetPhysicalDeviceExternalFenceProperties -> True)
+  where VkGetPhysicalDeviceExternalFenceProperties
+          = _VkGetPhysicalDeviceExternalFenceProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalFenceProperties #-}
+
+_VkGetPhysicalDeviceExternalFenceProperties :: CString
+_VkGetPhysicalDeviceExternalFenceProperties
+  = Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalFenceProperties #-}
+
+is_VkGetPhysicalDeviceExternalFenceProperties :: CString -> Bool
+is_VkGetPhysicalDeviceExternalFenceProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceExternalFenceProperties
+
+type VkGetPhysicalDeviceExternalFenceProperties =
+     "vkGetPhysicalDeviceExternalFenceProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
+                                                 VkPhysicalDevice -- ^ physicalDevice
+                                                                  ->
+                                                   Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                         ->
+                                                     Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceExternalFencePropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalFenceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                       ->
+                                                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceExternalFencePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalFenceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesSafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
+--
+vkGetPhysicalDeviceExternalFenceProperties ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                   ->
+                                               Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceExternalFenceProperties
+  = vkGetPhysicalDeviceExternalFencePropertiesUnsafe
+#else
+vkGetPhysicalDeviceExternalFenceProperties
+  = vkGetPhysicalDeviceExternalFencePropertiesSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceExternalFenceProperties #-}
+
+-- | > void vkGetPhysicalDeviceExternalFenceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalFenceProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                             ->
+         Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                       -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalFenceProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalFenceProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
+                 HS_vkGetPhysicalDeviceExternalFenceProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
+                 HS_vkGetPhysicalDeviceExternalFenceProperties
+
+instance VulkanProc "vkGetPhysicalDeviceExternalFenceProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceExternalFenceProperties" =
+             HS_vkGetPhysicalDeviceExternalFenceProperties
+        vkProcSymbol = _VkGetPhysicalDeviceExternalFenceProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalFencePropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO =
+        VkStructureType 1000112000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES =
+        VkStructureType 1000112001
+
+pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO =
+        VkStructureType 1000113000
+
+pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO =
+        VkStructureType 1000077000
+
+pattern VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalSemaphoreProperties <-
+        (is_VkGetPhysicalDeviceExternalSemaphoreProperties -> True)
+  where VkGetPhysicalDeviceExternalSemaphoreProperties
+          = _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+_VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
+_VkGetPhysicalDeviceExternalSemaphoreProperties
+  = Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+is_VkGetPhysicalDeviceExternalSemaphoreProperties ::
+                                                  CString -> Bool
+is_VkGetPhysicalDeviceExternalSemaphoreProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+type VkGetPhysicalDeviceExternalSemaphoreProperties =
+     "vkGetPhysicalDeviceExternalSemaphoreProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
+                                                     VkPhysicalDevice -- ^ physicalDevice
+                                                                      ->
+                                                       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                                 ->
+                                                         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+             #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                               ->
+                                                       Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesSafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
+--
+vkGetPhysicalDeviceExternalSemaphoreProperties ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                           ->
+                                                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                     -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceExternalSemaphoreProperties
+  = vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+#else
+vkGetPhysicalDeviceExternalSemaphoreProperties
+  = vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+-- | > void vkGetPhysicalDeviceExternalSemaphoreProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalSemaphoreProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                 ->
+         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                           -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
+                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
+                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+instance VulkanProc
+           "vkGetPhysicalDeviceExternalSemaphoreProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceExternalSemaphoreProperties" =
+             HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+        vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO =
+        VkStructureType 1000076000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES =
+        VkStructureType 1000076001
+
+pattern VkGetDescriptorSetLayoutSupport :: CString
+
+pattern VkGetDescriptorSetLayoutSupport <-
+        (is_VkGetDescriptorSetLayoutSupport -> True)
+  where VkGetDescriptorSetLayoutSupport
+          = _VkGetDescriptorSetLayoutSupport
+
+{-# INLINE _VkGetDescriptorSetLayoutSupport #-}
+
+_VkGetDescriptorSetLayoutSupport :: CString
+_VkGetDescriptorSetLayoutSupport
+  = Ptr "vkGetDescriptorSetLayoutSupport\NUL"#
+
+{-# INLINE is_VkGetDescriptorSetLayoutSupport #-}
+
+is_VkGetDescriptorSetLayoutSupport :: CString -> Bool
+is_VkGetDescriptorSetLayoutSupport
+  = (EQ ==) . cmpCStrings _VkGetDescriptorSetLayoutSupport
+
+type VkGetDescriptorSetLayoutSupport =
+     "vkGetDescriptorSetLayoutSupport"
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
+--           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+#else
+vkGetDescriptorSetLayoutSupportUnsafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                          Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                           -> IO ()
+vkGetDescriptorSetLayoutSupportUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDescriptorSetLayoutSupport)
+
+{-# NOINLINE vkGetDescriptorSetLayoutSupportUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
+--           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+#else
+vkGetDescriptorSetLayoutSupportSafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                          ->
+                                        Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                         -> IO ()
+vkGetDescriptorSetLayoutSupportSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDescriptorSetLayoutSupport)
+
+{-# NOINLINE vkGetDescriptorSetLayoutSupportSafe #-}
+#endif
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
+--           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
+--
+vkGetDescriptorSetLayoutSupport ::
+                                VkDevice -- ^ device
+                                         ->
+                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                      ->
+                                    Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                     -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDescriptorSetLayoutSupport
+  = vkGetDescriptorSetLayoutSupportUnsafe
+#else
+vkGetDescriptorSetLayoutSupport
+  = vkGetDescriptorSetLayoutSupportSafe
+
+#endif
+{-# INLINE vkGetDescriptorSetLayoutSupport #-}
+
+-- | > void vkGetDescriptorSetLayoutSupport
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+type HS_vkGetDescriptorSetLayoutSupport =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                           ->
+         Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                          -> IO ()
+
+type PFN_vkGetDescriptorSetLayoutSupport =
+     FunPtr HS_vkGetDescriptorSetLayoutSupport
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupportUnsafe ::
+               PFN_vkGetDescriptorSetLayoutSupport ->
+                 HS_vkGetDescriptorSetLayoutSupport
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupportSafe ::
+               PFN_vkGetDescriptorSetLayoutSupport ->
+                 HS_vkGetDescriptorSetLayoutSupport
+
+instance VulkanProc "vkGetDescriptorSetLayoutSupport" where
+        type VkProcType "vkGetDescriptorSetLayoutSupport" =
+             HS_vkGetDescriptorSetLayoutSupport
+        vkProcSymbol = _VkGetDescriptorSetLayoutSupport
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetDescriptorSetLayoutSupportUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext.hs b/src-gen/Graphics/Vulkan/Ext.hs
--- a/src-gen/Graphics/Vulkan/Ext.hs
+++ b/src-gen/Graphics/Vulkan/Ext.hs
@@ -123,6 +123,7 @@
     , module Graphics.Vulkan.Ext.VK_KHR_maintenance2
     , module Graphics.Vulkan.Ext.VK_KHR_get_surface_capabilities2
     , module Graphics.Vulkan.Ext.VK_KHR_variable_pointers
+    , module Graphics.Vulkan.Ext.VK_KHR_get_display_properties2
 #ifdef VK_USE_PLATFORM_IOS_MVK
     , module Graphics.Vulkan.Ext.VK_MVK_ios_surface
 #endif
@@ -160,6 +161,7 @@
     , module Graphics.Vulkan.Ext.VK_EXT_descriptor_indexing
     , module Graphics.Vulkan.Ext.VK_EXT_shader_viewport_index_layer
     , module Graphics.Vulkan.Ext.VK_KHR_maintenance3
+    , module Graphics.Vulkan.Ext.VK_KHR_draw_indirect_count
     , module Graphics.Vulkan.Ext.VK_EXT_global_priority
     , module Graphics.Vulkan.Ext.VK_EXT_external_memory_host
     , module Graphics.Vulkan.Ext.VK_AMD_buffer_marker
@@ -290,6 +292,7 @@
 import Graphics.Vulkan.Ext.VK_KHR_maintenance2
 import Graphics.Vulkan.Ext.VK_KHR_get_surface_capabilities2
 import Graphics.Vulkan.Ext.VK_KHR_variable_pointers
+import Graphics.Vulkan.Ext.VK_KHR_get_display_properties2
 #ifdef VK_USE_PLATFORM_IOS_MVK
 import Graphics.Vulkan.Ext.VK_MVK_ios_surface
 #endif
@@ -327,6 +330,7 @@
 import Graphics.Vulkan.Ext.VK_EXT_descriptor_indexing
 import Graphics.Vulkan.Ext.VK_EXT_shader_viewport_index_layer
 import Graphics.Vulkan.Ext.VK_KHR_maintenance3
+import Graphics.Vulkan.Ext.VK_KHR_draw_indirect_count
 import Graphics.Vulkan.Ext.VK_EXT_global_priority
 import Graphics.Vulkan.Ext.VK_EXT_external_memory_host
 import Graphics.Vulkan.Ext.VK_AMD_buffer_marker
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Daniel Rakos @aqnuep@
+        -- contact: @Daniel Rakos @drakos-amd@
         --
         -- author: @AMD@
         --
@@ -88,7 +89,7 @@
      FunPtr HS_vkCmdWriteBufferMarkerAMD
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdWriteBufferMarkerAMD ::
+               unwrapVkCmdWriteBufferMarkerAMDUnsafe ::
                PFN_vkCmdWriteBufferMarkerAMD -> HS_vkCmdWriteBufferMarkerAMD
 
 foreign import ccall safe "dynamic"
@@ -101,9 +102,9 @@
         vkProcSymbol = _VkCmdWriteBufferMarkerAMD
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdWriteBufferMarkerAMD
+        unwrapVkProcPtrUnsafe = unwrapVkCmdWriteBufferMarkerAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdWriteBufferMarkerAMDSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Daniel Rakos @aqnuep@
+        -- contact: @Daniel Rakos @drakos-amd@
         --
         -- author: @AMD@
         --
@@ -94,7 +95,7 @@
      FunPtr HS_vkCmdDrawIndirectCountAMD
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDrawIndirectCountAMD ::
+               unwrapVkCmdDrawIndirectCountAMDUnsafe ::
                PFN_vkCmdDrawIndirectCountAMD -> HS_vkCmdDrawIndirectCountAMD
 
 foreign import ccall safe "dynamic"
@@ -107,9 +108,9 @@
         vkProcSymbol = _VkCmdDrawIndirectCountAMD
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndirectCountAMD
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectCountAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountAMDSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -170,7 +171,7 @@
      FunPtr HS_vkCmdDrawIndexedIndirectCountAMD
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDrawIndexedIndirectCountAMD ::
+               unwrapVkCmdDrawIndexedIndirectCountAMDUnsafe ::
                PFN_vkCmdDrawIndexedIndirectCountAMD ->
                  HS_vkCmdDrawIndexedIndirectCountAMD
 
@@ -185,9 +186,10 @@
         vkProcSymbol = _VkCmdDrawIndexedIndirectCountAMD
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndexedIndirectCountAMD
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCmdDrawIndexedIndirectCountAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountAMDSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @dominik.witczak@amd.com@
+        -- contact: @Dominik Witczak @dominikwitczakamd@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Dominik Witczak @dominikwitczak_amd@
+        -- contact: @Dominik Witczak @dominikwitczakamd@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @quentin.lin@amd.com@
+        -- contact: @Qun Lin, AMD @linqun@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Daniel Rakos @aqnuep@
+        -- contact: @Daniel Rakos @drakos-amd@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Dominik Witczak @dominikwitczak_amd@
+        -- contact: @Dominik Witczak @dominikwitczakamd@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @quentin.lin@amd.com@
+        -- contact: @Qun Lin, AMD @linqun@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Aaron Hagan @ahagan@
+        -- contact: @Aaron Hagan @AaronHaganAMD@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Dominik Witczak @dominikwitczak_amd@
+        -- contact: @Dominik Witczak @dominikwitczakamd@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jaakko Konttinen @jaakko@
+        -- contact: @Jaakko Konttinen @jaakkoamd@
         --
         -- author: @AMD@
         --
@@ -89,7 +90,8 @@
 
 type PFN_vkGetShaderInfoAMD = FunPtr HS_vkGetShaderInfoAMD
 
-foreign import ccall unsafe "dynamic" unwrapVkGetShaderInfoAMD ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetShaderInfoAMDUnsafe ::
                PFN_vkGetShaderInfoAMD -> HS_vkGetShaderInfoAMD
 
 foreign import ccall safe "dynamic" unwrapVkGetShaderInfoAMDSafe ::
@@ -100,9 +102,9 @@
         vkProcSymbol = _VkGetShaderInfoAMD
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetShaderInfoAMD
+        unwrapVkProcPtrUnsafe = unwrapVkGetShaderInfoAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetShaderInfoAMDSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @quentin.lin@amd.com@
+        -- contact: @Qun Lin, AMD @linqun@
         --
         -- author: @AMD@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @ANDROID@
         --
@@ -139,7 +140,7 @@
      FunPtr HS_vkGetAndroidHardwareBufferPropertiesANDROID
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetAndroidHardwareBufferPropertiesANDROID ::
+               unwrapVkGetAndroidHardwareBufferPropertiesANDROIDUnsafe ::
                PFN_vkGetAndroidHardwareBufferPropertiesANDROID ->
                  HS_vkGetAndroidHardwareBufferPropertiesANDROID
 
@@ -155,9 +156,10 @@
         vkProcSymbol = _VkGetAndroidHardwareBufferPropertiesANDROID
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetAndroidHardwareBufferPropertiesANDROID
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDSafe
 
@@ -208,7 +210,7 @@
      FunPtr HS_vkGetMemoryAndroidHardwareBufferANDROID
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetMemoryAndroidHardwareBufferANDROID ::
+               unwrapVkGetMemoryAndroidHardwareBufferANDROIDUnsafe ::
                PFN_vkGetMemoryAndroidHardwareBufferANDROID ->
                  HS_vkGetMemoryAndroidHardwareBufferANDROID
 
@@ -223,9 +225,10 @@
         vkProcSymbol = _VkGetMemoryAndroidHardwareBufferANDROID
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryAndroidHardwareBufferANDROID
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetMemoryAndroidHardwareBufferANDROIDUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetMemoryAndroidHardwareBufferANDROIDSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -85,8 +86,9 @@
 type PFN_vkAcquireXlibDisplayEXT =
      FunPtr HS_vkAcquireXlibDisplayEXT
 
-foreign import ccall unsafe "dynamic" unwrapVkAcquireXlibDisplayEXT
-               :: PFN_vkAcquireXlibDisplayEXT -> HS_vkAcquireXlibDisplayEXT
+foreign import ccall unsafe "dynamic"
+               unwrapVkAcquireXlibDisplayEXTUnsafe ::
+               PFN_vkAcquireXlibDisplayEXT -> HS_vkAcquireXlibDisplayEXT
 
 foreign import ccall safe "dynamic"
                unwrapVkAcquireXlibDisplayEXTSafe ::
@@ -98,9 +100,9 @@
         vkProcSymbol = _VkAcquireXlibDisplayEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAcquireXlibDisplayEXT
+        unwrapVkProcPtrUnsafe = unwrapVkAcquireXlibDisplayEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkAcquireXlibDisplayEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -146,7 +148,7 @@
      FunPtr HS_vkGetRandROutputDisplayEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetRandROutputDisplayEXT ::
+               unwrapVkGetRandROutputDisplayEXTUnsafe ::
                PFN_vkGetRandROutputDisplayEXT -> HS_vkGetRandROutputDisplayEXT
 
 foreign import ccall safe "dynamic"
@@ -159,9 +161,9 @@
         vkProcSymbol = _VkGetRandROutputDisplayEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetRandROutputDisplayEXT
+        unwrapVkProcPtrUnsafe = unwrapVkGetRandROutputDisplayEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetRandROutputDisplayEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @baldurk@baldurk.org@
+        -- contact: @Baldur Karlsson @baldurk@
         --
         -- author: @Baldur Karlsson@
         --
@@ -101,7 +102,7 @@
      FunPtr HS_vkDebugMarkerSetObjectTagEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDebugMarkerSetObjectTagEXT ::
+               unwrapVkDebugMarkerSetObjectTagEXTUnsafe ::
                PFN_vkDebugMarkerSetObjectTagEXT -> HS_vkDebugMarkerSetObjectTagEXT
 
 foreign import ccall safe "dynamic"
@@ -114,9 +115,9 @@
         vkProcSymbol = _VkDebugMarkerSetObjectTagEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDebugMarkerSetObjectTagEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDebugMarkerSetObjectTagEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectTagEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -162,7 +163,7 @@
      FunPtr HS_vkDebugMarkerSetObjectNameEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDebugMarkerSetObjectNameEXT ::
+               unwrapVkDebugMarkerSetObjectNameEXTUnsafe ::
                PFN_vkDebugMarkerSetObjectNameEXT ->
                  HS_vkDebugMarkerSetObjectNameEXT
 
@@ -177,9 +178,9 @@
         vkProcSymbol = _VkDebugMarkerSetObjectNameEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDebugMarkerSetObjectNameEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDebugMarkerSetObjectNameEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectNameEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -222,7 +223,7 @@
      FunPtr HS_vkCmdDebugMarkerBeginEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDebugMarkerBeginEXT ::
+               unwrapVkCmdDebugMarkerBeginEXTUnsafe ::
                PFN_vkCmdDebugMarkerBeginEXT -> HS_vkCmdDebugMarkerBeginEXT
 
 foreign import ccall safe "dynamic"
@@ -235,9 +236,9 @@
         vkProcSymbol = _VkCmdDebugMarkerBeginEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDebugMarkerBeginEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerBeginEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerBeginEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -275,8 +276,9 @@
 
 type PFN_vkCmdDebugMarkerEndEXT = FunPtr HS_vkCmdDebugMarkerEndEXT
 
-foreign import ccall unsafe "dynamic" unwrapVkCmdDebugMarkerEndEXT
-               :: PFN_vkCmdDebugMarkerEndEXT -> HS_vkCmdDebugMarkerEndEXT
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDebugMarkerEndEXTUnsafe ::
+               PFN_vkCmdDebugMarkerEndEXT -> HS_vkCmdDebugMarkerEndEXT
 
 foreign import ccall safe "dynamic"
                unwrapVkCmdDebugMarkerEndEXTSafe ::
@@ -288,9 +290,9 @@
         vkProcSymbol = _VkCmdDebugMarkerEndEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDebugMarkerEndEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerEndEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerEndEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -333,7 +335,7 @@
      FunPtr HS_vkCmdDebugMarkerInsertEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDebugMarkerInsertEXT ::
+               unwrapVkCmdDebugMarkerInsertEXTUnsafe ::
                PFN_vkCmdDebugMarkerInsertEXT -> HS_vkCmdDebugMarkerInsertEXT
 
 foreign import ccall safe "dynamic"
@@ -346,9 +348,9 @@
         vkProcSymbol = _VkCmdDebugMarkerInsertEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDebugMarkerInsertEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerInsertEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerInsertEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
@@ -2,6 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -16,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Courtney Goeltzenleuchter @courtney@
+        -- contact: @Courtney Goeltzenleuchter @courtney-g@
         --
         -- author: @GOOGLE@
         --
@@ -126,7 +127,7 @@
      FunPtr HS_vkCreateDebugReportCallbackEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDebugReportCallbackEXT ::
+               unwrapVkCreateDebugReportCallbackEXTUnsafe ::
                PFN_vkCreateDebugReportCallbackEXT ->
                  HS_vkCreateDebugReportCallbackEXT
 
@@ -141,9 +142,9 @@
         vkProcSymbol = _VkCreateDebugReportCallbackEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDebugReportCallbackEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDebugReportCallbackEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateDebugReportCallbackEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -188,7 +189,7 @@
      FunPtr HS_vkDestroyDebugReportCallbackEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDebugReportCallbackEXT ::
+               unwrapVkDestroyDebugReportCallbackEXTUnsafe ::
                PFN_vkDestroyDebugReportCallbackEXT ->
                  HS_vkDestroyDebugReportCallbackEXT
 
@@ -203,9 +204,9 @@
         vkProcSymbol = _VkDestroyDebugReportCallbackEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDebugReportCallbackEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyDebugReportCallbackEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroyDebugReportCallbackEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -258,8 +259,9 @@
 type PFN_vkDebugReportMessageEXT =
      FunPtr HS_vkDebugReportMessageEXT
 
-foreign import ccall unsafe "dynamic" unwrapVkDebugReportMessageEXT
-               :: PFN_vkDebugReportMessageEXT -> HS_vkDebugReportMessageEXT
+foreign import ccall unsafe "dynamic"
+               unwrapVkDebugReportMessageEXTUnsafe ::
+               PFN_vkDebugReportMessageEXT -> HS_vkDebugReportMessageEXT
 
 foreign import ccall safe "dynamic"
                unwrapVkDebugReportMessageEXTSafe ::
@@ -271,9 +273,9 @@
         vkProcSymbol = _VkDebugReportMessageEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDebugReportMessageEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDebugReportMessageEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDebugReportMessageEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Mark Young @MarkY_LunarG@
+        -- contact: @Mark Young @marky-lunarg@
         --
         -- author: @EXT@
         --
@@ -145,7 +146,7 @@
      FunPtr HS_vkSetDebugUtilsObjectNameEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkSetDebugUtilsObjectNameEXT ::
+               unwrapVkSetDebugUtilsObjectNameEXTUnsafe ::
                PFN_vkSetDebugUtilsObjectNameEXT -> HS_vkSetDebugUtilsObjectNameEXT
 
 foreign import ccall safe "dynamic"
@@ -158,9 +159,9 @@
         vkProcSymbol = _VkSetDebugUtilsObjectNameEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkSetDebugUtilsObjectNameEXT
+        unwrapVkProcPtrUnsafe = unwrapVkSetDebugUtilsObjectNameEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectNameEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -204,7 +205,7 @@
      FunPtr HS_vkSetDebugUtilsObjectTagEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkSetDebugUtilsObjectTagEXT ::
+               unwrapVkSetDebugUtilsObjectTagEXTUnsafe ::
                PFN_vkSetDebugUtilsObjectTagEXT -> HS_vkSetDebugUtilsObjectTagEXT
 
 foreign import ccall safe "dynamic"
@@ -217,9 +218,9 @@
         vkProcSymbol = _VkSetDebugUtilsObjectTagEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkSetDebugUtilsObjectTagEXT
+        unwrapVkProcPtrUnsafe = unwrapVkSetDebugUtilsObjectTagEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectTagEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -261,7 +262,7 @@
      FunPtr HS_vkQueueBeginDebugUtilsLabelEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkQueueBeginDebugUtilsLabelEXT ::
+               unwrapVkQueueBeginDebugUtilsLabelEXTUnsafe ::
                PFN_vkQueueBeginDebugUtilsLabelEXT ->
                  HS_vkQueueBeginDebugUtilsLabelEXT
 
@@ -276,9 +277,9 @@
         vkProcSymbol = _VkQueueBeginDebugUtilsLabelEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueBeginDebugUtilsLabelEXT
+        unwrapVkProcPtrUnsafe = unwrapVkQueueBeginDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkQueueBeginDebugUtilsLabelEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -315,7 +316,7 @@
      FunPtr HS_vkQueueEndDebugUtilsLabelEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkQueueEndDebugUtilsLabelEXT ::
+               unwrapVkQueueEndDebugUtilsLabelEXTUnsafe ::
                PFN_vkQueueEndDebugUtilsLabelEXT -> HS_vkQueueEndDebugUtilsLabelEXT
 
 foreign import ccall safe "dynamic"
@@ -328,9 +329,9 @@
         vkProcSymbol = _VkQueueEndDebugUtilsLabelEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueEndDebugUtilsLabelEXT
+        unwrapVkProcPtrUnsafe = unwrapVkQueueEndDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkQueueEndDebugUtilsLabelEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -372,7 +373,7 @@
      FunPtr HS_vkQueueInsertDebugUtilsLabelEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkQueueInsertDebugUtilsLabelEXT ::
+               unwrapVkQueueInsertDebugUtilsLabelEXTUnsafe ::
                PFN_vkQueueInsertDebugUtilsLabelEXT ->
                  HS_vkQueueInsertDebugUtilsLabelEXT
 
@@ -387,9 +388,9 @@
         vkProcSymbol = _VkQueueInsertDebugUtilsLabelEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueInsertDebugUtilsLabelEXT
+        unwrapVkProcPtrUnsafe = unwrapVkQueueInsertDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkQueueInsertDebugUtilsLabelEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -433,7 +434,7 @@
      FunPtr HS_vkCmdBeginDebugUtilsLabelEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdBeginDebugUtilsLabelEXT ::
+               unwrapVkCmdBeginDebugUtilsLabelEXTUnsafe ::
                PFN_vkCmdBeginDebugUtilsLabelEXT -> HS_vkCmdBeginDebugUtilsLabelEXT
 
 foreign import ccall safe "dynamic"
@@ -446,9 +447,9 @@
         vkProcSymbol = _VkCmdBeginDebugUtilsLabelEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBeginDebugUtilsLabelEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdBeginDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdBeginDebugUtilsLabelEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -488,7 +489,7 @@
      FunPtr HS_vkCmdEndDebugUtilsLabelEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdEndDebugUtilsLabelEXT ::
+               unwrapVkCmdEndDebugUtilsLabelEXTUnsafe ::
                PFN_vkCmdEndDebugUtilsLabelEXT -> HS_vkCmdEndDebugUtilsLabelEXT
 
 foreign import ccall safe "dynamic"
@@ -501,9 +502,9 @@
         vkProcSymbol = _VkCmdEndDebugUtilsLabelEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdEndDebugUtilsLabelEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdEndDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdEndDebugUtilsLabelEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -549,7 +550,7 @@
      FunPtr HS_vkCmdInsertDebugUtilsLabelEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdInsertDebugUtilsLabelEXT ::
+               unwrapVkCmdInsertDebugUtilsLabelEXTUnsafe ::
                PFN_vkCmdInsertDebugUtilsLabelEXT ->
                  HS_vkCmdInsertDebugUtilsLabelEXT
 
@@ -564,9 +565,9 @@
         vkProcSymbol = _VkCmdInsertDebugUtilsLabelEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdInsertDebugUtilsLabelEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdInsertDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdInsertDebugUtilsLabelEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -619,7 +620,7 @@
      FunPtr HS_vkCreateDebugUtilsMessengerEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDebugUtilsMessengerEXT ::
+               unwrapVkCreateDebugUtilsMessengerEXTUnsafe ::
                PFN_vkCreateDebugUtilsMessengerEXT ->
                  HS_vkCreateDebugUtilsMessengerEXT
 
@@ -634,9 +635,9 @@
         vkProcSymbol = _VkCreateDebugUtilsMessengerEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDebugUtilsMessengerEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDebugUtilsMessengerEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateDebugUtilsMessengerEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -681,7 +682,7 @@
      FunPtr HS_vkDestroyDebugUtilsMessengerEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDebugUtilsMessengerEXT ::
+               unwrapVkDestroyDebugUtilsMessengerEXTUnsafe ::
                PFN_vkDestroyDebugUtilsMessengerEXT ->
                  HS_vkDestroyDebugUtilsMessengerEXT
 
@@ -696,9 +697,9 @@
         vkProcSymbol = _VkDestroyDebugUtilsMessengerEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDebugUtilsMessengerEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyDebugUtilsMessengerEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroyDebugUtilsMessengerEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -745,7 +746,7 @@
      FunPtr HS_vkSubmitDebugUtilsMessageEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkSubmitDebugUtilsMessageEXT ::
+               unwrapVkSubmitDebugUtilsMessageEXTUnsafe ::
                PFN_vkSubmitDebugUtilsMessageEXT -> HS_vkSubmitDebugUtilsMessageEXT
 
 foreign import ccall safe "dynamic"
@@ -758,9 +759,9 @@
         vkProcSymbol = _VkSubmitDebugUtilsMessageEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkSubmitDebugUtilsMessageEXT
+        unwrapVkProcPtrUnsafe = unwrapVkSubmitDebugUtilsMessageEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkSubmitDebugUtilsMessageEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -73,7 +74,8 @@
 
 type PFN_vkReleaseDisplayEXT = FunPtr HS_vkReleaseDisplayEXT
 
-foreign import ccall unsafe "dynamic" unwrapVkReleaseDisplayEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkReleaseDisplayEXTUnsafe ::
                PFN_vkReleaseDisplayEXT -> HS_vkReleaseDisplayEXT
 
 foreign import ccall safe "dynamic" unwrapVkReleaseDisplayEXTSafe
@@ -84,9 +86,9 @@
         vkProcSymbol = _VkReleaseDisplayEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkReleaseDisplayEXT
+        unwrapVkProcPtrUnsafe = unwrapVkReleaseDisplayEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkReleaseDisplayEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @NV@
         --
@@ -145,7 +146,7 @@
      FunPtr HS_vkCmdSetDiscardRectangleEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetDiscardRectangleEXT ::
+               unwrapVkCmdSetDiscardRectangleEXTUnsafe ::
                PFN_vkCmdSetDiscardRectangleEXT -> HS_vkCmdSetDiscardRectangleEXT
 
 foreign import ccall safe "dynamic"
@@ -158,9 +159,9 @@
         vkProcSymbol = _VkCmdSetDiscardRectangleEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDiscardRectangleEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDiscardRectangleEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdSetDiscardRectangleEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -133,7 +134,7 @@
      FunPtr HS_vkDisplayPowerControlEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDisplayPowerControlEXT ::
+               unwrapVkDisplayPowerControlEXTUnsafe ::
                PFN_vkDisplayPowerControlEXT -> HS_vkDisplayPowerControlEXT
 
 foreign import ccall safe "dynamic"
@@ -146,9 +147,9 @@
         vkProcSymbol = _VkDisplayPowerControlEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDisplayPowerControlEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDisplayPowerControlEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDisplayPowerControlEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -195,7 +196,7 @@
      FunPtr HS_vkRegisterDeviceEventEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkRegisterDeviceEventEXT ::
+               unwrapVkRegisterDeviceEventEXTUnsafe ::
                PFN_vkRegisterDeviceEventEXT -> HS_vkRegisterDeviceEventEXT
 
 foreign import ccall safe "dynamic"
@@ -208,9 +209,9 @@
         vkProcSymbol = _VkRegisterDeviceEventEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkRegisterDeviceEventEXT
+        unwrapVkProcPtrUnsafe = unwrapVkRegisterDeviceEventEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkRegisterDeviceEventEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -260,7 +261,7 @@
      FunPtr HS_vkRegisterDisplayEventEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkRegisterDisplayEventEXT ::
+               unwrapVkRegisterDisplayEventEXTUnsafe ::
                PFN_vkRegisterDisplayEventEXT -> HS_vkRegisterDisplayEventEXT
 
 foreign import ccall safe "dynamic"
@@ -273,9 +274,9 @@
         vkProcSymbol = _VkRegisterDisplayEventEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkRegisterDisplayEventEXT
+        unwrapVkProcPtrUnsafe = unwrapVkRegisterDisplayEventEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkRegisterDisplayEventEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -324,7 +325,7 @@
      FunPtr HS_vkGetSwapchainCounterEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetSwapchainCounterEXT ::
+               unwrapVkGetSwapchainCounterEXTUnsafe ::
                PFN_vkGetSwapchainCounterEXT -> HS_vkGetSwapchainCounterEXT
 
 foreign import ccall safe "dynamic"
@@ -337,9 +338,9 @@
         vkProcSymbol = _VkGetSwapchainCounterEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetSwapchainCounterEXT
+        unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainCounterEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetSwapchainCounterEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -106,7 +107,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXT ::
+               unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTUnsafe ::
                PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ->
                  HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
 
@@ -122,9 +123,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilities2EXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXT
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Daniel Rakos @aqnuep@
+        -- contact: @Daniel Rakos @drakos-amd@
         --
         -- author: @EXT@
         --
@@ -116,7 +117,7 @@
      FunPtr HS_vkGetMemoryHostPointerPropertiesEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetMemoryHostPointerPropertiesEXT ::
+               unwrapVkGetMemoryHostPointerPropertiesEXTUnsafe ::
                PFN_vkGetMemoryHostPointerPropertiesEXT ->
                  HS_vkGetMemoryHostPointerPropertiesEXT
 
@@ -131,9 +132,10 @@
         vkProcSymbol = _VkGetMemoryHostPointerPropertiesEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryHostPointerPropertiesEXT
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetMemoryHostPointerPropertiesEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetMemoryHostPointerPropertiesEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Courtney Goeltzenleuchter @courtneygo@
+        -- contact: @Courtney Goeltzenleuchter @courtney-g@
         --
         -- author: @GOOGLE@
         --
@@ -82,7 +83,8 @@
 
 type PFN_vkSetHdrMetadataEXT = FunPtr HS_vkSetHdrMetadataEXT
 
-foreign import ccall unsafe "dynamic" unwrapVkSetHdrMetadataEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkSetHdrMetadataEXTUnsafe ::
                PFN_vkSetHdrMetadataEXT -> HS_vkSetHdrMetadataEXT
 
 foreign import ccall safe "dynamic" unwrapVkSetHdrMetadataEXTSafe
@@ -93,9 +95,9 @@
         vkProcSymbol = _VkSetHdrMetadataEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkSetHdrMetadataEXT
+        unwrapVkProcPtrUnsafe = unwrapVkSetHdrMetadataEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkSetHdrMetadataEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Daniel Rakos @aqnuep@
+        -- contact: @Daniel Rakos @drakos-amd@
         --
         -- author: @AMD@
         --
@@ -125,7 +126,7 @@
      FunPtr HS_vkCmdSetSampleLocationsEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetSampleLocationsEXT ::
+               unwrapVkCmdSetSampleLocationsEXTUnsafe ::
                PFN_vkCmdSetSampleLocationsEXT -> HS_vkCmdSetSampleLocationsEXT
 
 foreign import ccall safe "dynamic"
@@ -138,9 +139,9 @@
         vkProcSymbol = _VkCmdSetSampleLocationsEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetSampleLocationsEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetSampleLocationsEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdSetSampleLocationsEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -186,7 +187,7 @@
      FunPtr HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMultisamplePropertiesEXT ::
+               unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTUnsafe ::
                PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ->
                  HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
 
@@ -202,9 +203,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceMultisamplePropertiesEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXT
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @dominik.witczak@amd.com@
+        -- contact: @Dominik Witczak @dominikwitczakamd@
         --
         -- author: @EXT@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Courtney Goeltzenleuchter @courtneygo@
+        -- contact: @Courtney Goeltzenleuchter @courtney-g@
         --
         -- author: @GOOGLE@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -116,7 +117,7 @@
      FunPtr HS_vkCreateValidationCacheEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateValidationCacheEXT ::
+               unwrapVkCreateValidationCacheEXTUnsafe ::
                PFN_vkCreateValidationCacheEXT -> HS_vkCreateValidationCacheEXT
 
 foreign import ccall safe "dynamic"
@@ -129,9 +130,9 @@
         vkProcSymbol = _VkCreateValidationCacheEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateValidationCacheEXT
+        unwrapVkProcPtrUnsafe = unwrapVkCreateValidationCacheEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateValidationCacheEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -174,7 +175,7 @@
      FunPtr HS_vkDestroyValidationCacheEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyValidationCacheEXT ::
+               unwrapVkDestroyValidationCacheEXTUnsafe ::
                PFN_vkDestroyValidationCacheEXT -> HS_vkDestroyValidationCacheEXT
 
 foreign import ccall safe "dynamic"
@@ -187,9 +188,9 @@
         vkProcSymbol = _VkDestroyValidationCacheEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyValidationCacheEXT
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyValidationCacheEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroyValidationCacheEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -238,7 +239,7 @@
      FunPtr HS_vkMergeValidationCachesEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkMergeValidationCachesEXT ::
+               unwrapVkMergeValidationCachesEXTUnsafe ::
                PFN_vkMergeValidationCachesEXT -> HS_vkMergeValidationCachesEXT
 
 foreign import ccall safe "dynamic"
@@ -251,9 +252,9 @@
         vkProcSymbol = _VkMergeValidationCachesEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkMergeValidationCachesEXT
+        unwrapVkProcPtrUnsafe = unwrapVkMergeValidationCachesEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkMergeValidationCachesEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -302,7 +303,7 @@
      FunPtr HS_vkGetValidationCacheDataEXT
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetValidationCacheDataEXT ::
+               unwrapVkGetValidationCacheDataEXTUnsafe ::
                PFN_vkGetValidationCacheDataEXT -> HS_vkGetValidationCacheDataEXT
 
 foreign import ccall safe "dynamic"
@@ -315,9 +316,9 @@
         vkProcSymbol = _VkGetValidationCacheDataEXT
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetValidationCacheDataEXT
+        unwrapVkProcPtrUnsafe = unwrapVkGetValidationCacheDataEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetValidationCacheDataEXTSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs b/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Ian Elliott ianelliott@google.com@
+        -- contact: @Ian Elliott @ianelliottus@
         --
         -- author: @GOOGLE@
         --
@@ -102,7 +103,7 @@
      FunPtr HS_vkGetRefreshCycleDurationGOOGLE
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetRefreshCycleDurationGOOGLE ::
+               unwrapVkGetRefreshCycleDurationGOOGLEUnsafe ::
                PFN_vkGetRefreshCycleDurationGOOGLE ->
                  HS_vkGetRefreshCycleDurationGOOGLE
 
@@ -117,9 +118,9 @@
         vkProcSymbol = _VkGetRefreshCycleDurationGOOGLE
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetRefreshCycleDurationGOOGLE
+        unwrapVkProcPtrUnsafe = unwrapVkGetRefreshCycleDurationGOOGLEUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetRefreshCycleDurationGOOGLESafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -171,7 +172,7 @@
      FunPtr HS_vkGetPastPresentationTimingGOOGLE
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPastPresentationTimingGOOGLE ::
+               unwrapVkGetPastPresentationTimingGOOGLEUnsafe ::
                PFN_vkGetPastPresentationTimingGOOGLE ->
                  HS_vkGetPastPresentationTimingGOOGLE
 
@@ -186,9 +187,10 @@
         vkProcSymbol = _VkGetPastPresentationTimingGOOGLE
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPastPresentationTimingGOOGLE
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPastPresentationTimingGOOGLEUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetPastPresentationTimingGOOGLESafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs b/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Tobias Hector @tobias@
+        -- contact: @Tobias Hector @tobski@
         --
         -- author: @IMG@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs b/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Tobias Hector @tobias@
+        -- contact: @Tobias Hector @tobski@
         --
         -- author: @IMG@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs
@@ -11,7 +11,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jan-Harald Fredriksen @janharald@
+        -- contact: @Jan-Harald Fredriksen @janharaldfredriksen-arm@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @KHR@
         --
@@ -38,8 +38,8 @@
         -- > #include "vk_platform.h"
         VkCreateAndroidSurfaceKHR, pattern VkCreateAndroidSurfaceKHR,
         HS_vkCreateAndroidSurfaceKHR, PFN_vkCreateAndroidSurfaceKHR,
-        vkCreateAndroidSurfaceKHR, vkCreateAndroidSurfaceKHRSafe,
-        module Graphics.Vulkan.Marshal,
+        vkCreateAndroidSurfaceKHR, vkCreateAndroidSurfaceKHRUnsafe,
+        vkCreateAndroidSurfaceKHRSafe, module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Defines,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
         module Graphics.Vulkan.Types.Enum.Result,
@@ -114,12 +114,15 @@
 --
 -- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateAndroidSurfaceKHRUnsafe@ and @vkCreateAndroidSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateAndroidSurfaceKHR@ is an alias
+--           of @vkCreateAndroidSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateAndroidSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateAndroidSurfaceKHR"
-               vkCreateAndroidSurfaceKHR ::
+               vkCreateAndroidSurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkAndroidSurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -129,18 +132,19 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateAndroidSurfaceKHR ::
-                          VkInstance -- ^ instance
-                                     ->
-                            Ptr VkAndroidSurfaceCreateInfoKHR -- ^ pCreateInfo
-                                                              ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                            -> IO VkResult
-vkCreateAndroidSurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateAndroidSurfaceKHR)
+vkCreateAndroidSurfaceKHRUnsafe ::
+                                VkInstance -- ^ instance
+                                           ->
+                                  Ptr VkAndroidSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                                    ->
+                                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                                  -> IO VkResult
+vkCreateAndroidSurfaceKHRUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateAndroidSurfaceKHR)
 
-{-# NOINLINE vkCreateAndroidSurfaceKHR #-}
+{-# NOINLINE vkCreateAndroidSurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -169,9 +173,12 @@
 --
 -- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateAndroidSurfaceKHRUnsafe@ and @vkCreateAndroidSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateAndroidSurfaceKHR@ is an alias
+--           of @vkCreateAndroidSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateAndroidSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateAndroidSurfaceKHR"
                vkCreateAndroidSurfaceKHRSafe ::
@@ -198,6 +205,53 @@
 {-# NOINLINE vkCreateAndroidSurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+-- > VkResult vkCreateAndroidSurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkAndroidSurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateAndroidSurfaceKHR <- vkGetInstanceProc @VkCreateAndroidSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
+--
+-- __Note:__ @vkCreateAndroidSurfaceKHRUnsafe@ and @vkCreateAndroidSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateAndroidSurfaceKHR@ is an alias
+--           of @vkCreateAndroidSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateAndroidSurfaceKHRSafe@.
+--
+vkCreateAndroidSurfaceKHR ::
+                          VkInstance -- ^ instance
+                                     ->
+                            Ptr VkAndroidSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                              ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                            -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateAndroidSurfaceKHR = vkCreateAndroidSurfaceKHRUnsafe
+#else
+vkCreateAndroidSurfaceKHR = vkCreateAndroidSurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateAndroidSurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
@@ -223,7 +277,7 @@
      FunPtr HS_vkCreateAndroidSurfaceKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateAndroidSurfaceKHR ::
+               unwrapVkCreateAndroidSurfaceKHRUnsafe ::
                PFN_vkCreateAndroidSurfaceKHR -> HS_vkCreateAndroidSurfaceKHR
 
 foreign import ccall safe "dynamic"
@@ -236,9 +290,9 @@
         vkProcSymbol = _VkCreateAndroidSurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateAndroidSurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateAndroidSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateAndroidSurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Tobias Hector @tobias@
+        -- contact: @Tobias Hector @tobski@
         --
         -- author: @KHR@
         --
@@ -91,8 +92,9 @@
 
 type PFN_vkBindBufferMemory2KHR = FunPtr HS_vkBindBufferMemory2KHR
 
-foreign import ccall unsafe "dynamic" unwrapVkBindBufferMemory2KHR
-               :: PFN_vkBindBufferMemory2KHR -> HS_vkBindBufferMemory2KHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindBufferMemory2KHRUnsafe ::
+               PFN_vkBindBufferMemory2KHR -> HS_vkBindBufferMemory2KHR
 
 foreign import ccall safe "dynamic"
                unwrapVkBindBufferMemory2KHRSafe ::
@@ -104,9 +106,9 @@
         vkProcSymbol = _VkBindBufferMemory2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindBufferMemory2KHR
+        unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemory2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -150,8 +152,9 @@
 
 type PFN_vkBindImageMemory2KHR = FunPtr HS_vkBindImageMemory2KHR
 
-foreign import ccall unsafe "dynamic" unwrapVkBindImageMemory2KHR
-               :: PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindImageMemory2KHRUnsafe ::
+               PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
 
 foreign import ccall safe "dynamic" unwrapVkBindImageMemory2KHRSafe
                :: PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
@@ -161,9 +164,9 @@
         vkProcSymbol = _VkBindImageMemory2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindImageMemory2KHR
+        unwrapVkProcPtrUnsafe = unwrapVkBindImageMemory2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkBindImageMemory2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -135,7 +136,7 @@
      FunPtr HS_vkCreateDescriptorUpdateTemplateKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDescriptorUpdateTemplateKHR ::
+               unwrapVkCreateDescriptorUpdateTemplateKHRUnsafe ::
                PFN_vkCreateDescriptorUpdateTemplateKHR ->
                  HS_vkCreateDescriptorUpdateTemplateKHR
 
@@ -150,9 +151,10 @@
         vkProcSymbol = _VkCreateDescriptorUpdateTemplateKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorUpdateTemplateKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCreateDescriptorUpdateTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -199,7 +201,7 @@
      FunPtr HS_vkDestroyDescriptorUpdateTemplateKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDescriptorUpdateTemplateKHR ::
+               unwrapVkDestroyDescriptorUpdateTemplateKHRUnsafe ::
                PFN_vkDestroyDescriptorUpdateTemplateKHR ->
                  HS_vkDestroyDescriptorUpdateTemplateKHR
 
@@ -214,9 +216,10 @@
         vkProcSymbol = _VkDestroyDescriptorUpdateTemplateKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorUpdateTemplateKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkDestroyDescriptorUpdateTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkDestroyDescriptorUpdateTemplateKHRSafe
 
@@ -266,7 +269,7 @@
      FunPtr HS_vkUpdateDescriptorSetWithTemplateKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkUpdateDescriptorSetWithTemplateKHR ::
+               unwrapVkUpdateDescriptorSetWithTemplateKHRUnsafe ::
                PFN_vkUpdateDescriptorSetWithTemplateKHR ->
                  HS_vkUpdateDescriptorSetWithTemplateKHR
 
@@ -281,9 +284,10 @@
         vkProcSymbol = _VkUpdateDescriptorSetWithTemplateKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUpdateDescriptorSetWithTemplateKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkUpdateDescriptorSetWithTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkUpdateDescriptorSetWithTemplateKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
@@ -2,6 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -16,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @KHR@
         --
@@ -210,7 +211,7 @@
      FunPtr HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceGroupPeerMemoryFeaturesKHR ::
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRUnsafe ::
                PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ->
                  HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
 
@@ -225,9 +226,10 @@
         vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeaturesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe
 
@@ -269,8 +271,9 @@
 
 type PFN_vkCmdSetDeviceMaskKHR = FunPtr HS_vkCmdSetDeviceMaskKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetDeviceMaskKHR
-               :: PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetDeviceMaskKHRUnsafe ::
+               PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
 
 foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskKHRSafe
                :: PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
@@ -280,9 +283,9 @@
         vkProcSymbol = _VkCmdSetDeviceMaskKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDeviceMaskKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDeviceMaskKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -335,7 +338,8 @@
 
 type PFN_vkCmdDispatchBaseKHR = FunPtr HS_vkCmdDispatchBaseKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBaseKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDispatchBaseKHRUnsafe ::
                PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR
 
 foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseKHRSafe
@@ -346,9 +350,9 @@
         vkProcSymbol = _VkCmdDispatchBaseKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatchBaseKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchBaseKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @KHR@
         --
@@ -102,7 +103,7 @@
      FunPtr HS_vkEnumeratePhysicalDeviceGroupsKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkEnumeratePhysicalDeviceGroupsKHR ::
+               unwrapVkEnumeratePhysicalDeviceGroupsKHRUnsafe ::
                PFN_vkEnumeratePhysicalDeviceGroupsKHR ->
                  HS_vkEnumeratePhysicalDeviceGroupsKHR
 
@@ -117,9 +118,10 @@
         vkProcSymbol = _VkEnumeratePhysicalDeviceGroupsKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDeviceGroupsKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkEnumeratePhysicalDeviceGroupsKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
@@ -44,36 +44,43 @@
         HS_vkGetPhysicalDeviceDisplayPropertiesKHR,
         PFN_vkGetPhysicalDeviceDisplayPropertiesKHR,
         vkGetPhysicalDeviceDisplayPropertiesKHR,
+        vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe,
         vkGetPhysicalDeviceDisplayPropertiesKHRSafe,
         VkGetPhysicalDeviceDisplayPlanePropertiesKHR,
         pattern VkGetPhysicalDeviceDisplayPlanePropertiesKHR,
         HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
         PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
         vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
+        vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe,
         vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe,
         VkGetDisplayPlaneSupportedDisplaysKHR,
         pattern VkGetDisplayPlaneSupportedDisplaysKHR,
         HS_vkGetDisplayPlaneSupportedDisplaysKHR,
         PFN_vkGetDisplayPlaneSupportedDisplaysKHR,
         vkGetDisplayPlaneSupportedDisplaysKHR,
+        vkGetDisplayPlaneSupportedDisplaysKHRUnsafe,
         vkGetDisplayPlaneSupportedDisplaysKHRSafe,
         VkGetDisplayModePropertiesKHR,
         pattern VkGetDisplayModePropertiesKHR,
         HS_vkGetDisplayModePropertiesKHR,
         PFN_vkGetDisplayModePropertiesKHR, vkGetDisplayModePropertiesKHR,
+        vkGetDisplayModePropertiesKHRUnsafe,
         vkGetDisplayModePropertiesKHRSafe, VkCreateDisplayModeKHR,
         pattern VkCreateDisplayModeKHR, HS_vkCreateDisplayModeKHR,
         PFN_vkCreateDisplayModeKHR, vkCreateDisplayModeKHR,
-        vkCreateDisplayModeKHRSafe, VkGetDisplayPlaneCapabilitiesKHR,
+        vkCreateDisplayModeKHRUnsafe, vkCreateDisplayModeKHRSafe,
+        VkGetDisplayPlaneCapabilitiesKHR,
         pattern VkGetDisplayPlaneCapabilitiesKHR,
         HS_vkGetDisplayPlaneCapabilitiesKHR,
         PFN_vkGetDisplayPlaneCapabilitiesKHR,
         vkGetDisplayPlaneCapabilitiesKHR,
+        vkGetDisplayPlaneCapabilitiesKHRUnsafe,
         vkGetDisplayPlaneCapabilitiesKHRSafe,
         VkCreateDisplayPlaneSurfaceKHR,
         pattern VkCreateDisplayPlaneSurfaceKHR,
         HS_vkCreateDisplayPlaneSurfaceKHR,
         PFN_vkCreateDisplayPlaneSurfaceKHR, vkCreateDisplayPlaneSurfaceKHR,
+        vkCreateDisplayPlaneSurfaceKHRUnsafe,
         vkCreateDisplayPlaneSurfaceKHRSafe,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
         module Graphics.Vulkan.Types.Enum.Result,
@@ -156,13 +163,16 @@
 --
 -- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe@ and @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceDisplayPropertiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceDisplayPropertiesKHR"
-               vkGetPhysicalDeviceDisplayPropertiesKHR ::
+               vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Ptr Word32 -- ^ pPropertyCount
@@ -170,17 +180,18 @@
                                                           -> IO VkResult
 
 #else
-vkGetPhysicalDeviceDisplayPropertiesKHR ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          Ptr Word32 -- ^ pPropertyCount
-                                                     -> Ptr VkDisplayPropertiesKHR -- ^ pProperties
-                                                                                   -> IO VkResult
-vkGetPhysicalDeviceDisplayPropertiesKHR
+vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr Word32 -- ^ pPropertyCount
+                                                           ->
+                                                  Ptr VkDisplayPropertiesKHR -- ^ pProperties
+                                                                             -> IO VkResult
+vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceDisplayPropertiesKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceDisplayPropertiesKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe #-}
 #endif
 
 -- |
@@ -208,9 +219,12 @@
 --
 -- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe@ and @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceDisplayPropertiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetPhysicalDeviceDisplayPropertiesKHR"
                vkGetPhysicalDeviceDisplayPropertiesKHRSafe ::
@@ -235,6 +249,52 @@
 {-# NOINLINE vkGetPhysicalDeviceDisplayPropertiesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPhysicalDeviceDisplayPropertiesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkDisplayPropertiesKHR* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe@ and @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceDisplayPropertiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@.
+--
+vkGetPhysicalDeviceDisplayPropertiesKHR ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          Ptr Word32 -- ^ pPropertyCount
+                                                     -> Ptr VkDisplayPropertiesKHR -- ^ pProperties
+                                                                                   -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceDisplayPropertiesKHR
+  = vkGetPhysicalDeviceDisplayPropertiesKHRUnsafe
+#else
+vkGetPhysicalDeviceDisplayPropertiesKHR
+  = vkGetPhysicalDeviceDisplayPropertiesKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceDisplayPropertiesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -257,7 +317,7 @@
      FunPtr HS_vkGetPhysicalDeviceDisplayPropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceDisplayPropertiesKHR ::
+               unwrapVkGetPhysicalDeviceDisplayPropertiesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ->
                  HS_vkGetPhysicalDeviceDisplayPropertiesKHR
 
@@ -272,9 +332,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceDisplayPropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceDisplayPropertiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRSafe
 
@@ -328,13 +389,16 @@
 --
 -- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe@ and @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
-               vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
+               vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Ptr Word32 -- ^ pPropertyCount
@@ -342,18 +406,19 @@
                                                                -> IO VkResult
 
 #else
-vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               Ptr Word32 -- ^ pPropertyCount
-                                                          ->
-                                                 Ptr VkDisplayPlanePropertiesKHR -- ^ pProperties
-                                                                                 -> IO VkResult
-vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     Ptr Word32 -- ^ pPropertyCount
+                                                                ->
+                                                       Ptr VkDisplayPlanePropertiesKHR -- ^ pProperties
+                                                                                       ->
+                                                         IO VkResult
+vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceDisplayPlanePropertiesKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe #-}
 #endif
 
 -- |
@@ -381,9 +446,12 @@
 --
 -- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe@ and @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
@@ -409,6 +477,53 @@
 {-# NOINLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkDisplayPlanePropertiesKHR* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe@ and @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@.
+--
+vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               Ptr Word32 -- ^ pPropertyCount
+                                                          ->
+                                                 Ptr VkDisplayPlanePropertiesKHR -- ^ pProperties
+                                                                                 -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+  = vkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe
+#else
+vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+  = vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -431,7 +546,7 @@
      FunPtr HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
+               unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ->
                  HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
@@ -447,10 +562,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe
 
@@ -504,12 +619,15 @@
 --
 -- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDisplayPlaneSupportedDisplaysKHRUnsafe@ and @vkGetDisplayPlaneSupportedDisplaysKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayPlaneSupportedDisplaysKHR@ is an alias
+--           of @vkGetDisplayPlaneSupportedDisplaysKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayPlaneSupportedDisplaysKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetDisplayPlaneSupportedDisplaysKHR"
-               vkGetDisplayPlaneSupportedDisplaysKHR ::
+               vkGetDisplayPlaneSupportedDisplaysKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Word32 -- ^ planeIndex
@@ -518,18 +636,19 @@
                                                           -> IO VkResult
 
 #else
-vkGetDisplayPlaneSupportedDisplaysKHR ::
-                                      VkPhysicalDevice -- ^ physicalDevice
-                                                       ->
-                                        Word32 -- ^ planeIndex
-                                               -> Ptr Word32 -- ^ pDisplayCount
-                                                             -> Ptr VkDisplayKHR -- ^ pDisplays
-                                                                                 -> IO VkResult
-vkGetDisplayPlaneSupportedDisplaysKHR
+vkGetDisplayPlaneSupportedDisplaysKHRUnsafe ::
+                                            VkPhysicalDevice -- ^ physicalDevice
+                                                             ->
+                                              Word32 -- ^ planeIndex
+                                                     ->
+                                                Ptr Word32 -- ^ pDisplayCount
+                                                           -> Ptr VkDisplayKHR -- ^ pDisplays
+                                                                               -> IO VkResult
+vkGetDisplayPlaneSupportedDisplaysKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR)
+      (vkGetProcUnsafe @VkGetDisplayPlaneSupportedDisplaysKHR)
 
-{-# NOINLINE vkGetDisplayPlaneSupportedDisplaysKHR #-}
+{-# NOINLINE vkGetDisplayPlaneSupportedDisplaysKHRUnsafe #-}
 #endif
 
 -- |
@@ -558,9 +677,12 @@
 --
 -- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDisplayPlaneSupportedDisplaysKHRUnsafe@ and @vkGetDisplayPlaneSupportedDisplaysKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayPlaneSupportedDisplaysKHR@ is an alias
+--           of @vkGetDisplayPlaneSupportedDisplaysKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayPlaneSupportedDisplaysKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetDisplayPlaneSupportedDisplaysKHR"
                vkGetDisplayPlaneSupportedDisplaysKHRSafe ::
@@ -586,6 +708,54 @@
 {-# NOINLINE vkGetDisplayPlaneSupportedDisplaysKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetDisplayPlaneSupportedDisplaysKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t planeIndex
+-- >     , uint32_t* pDisplayCount
+-- >     , VkDisplayKHR* pDisplays
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetInstanceProc @VkGetDisplayPlaneSupportedDisplaysKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
+--
+-- __Note:__ @vkGetDisplayPlaneSupportedDisplaysKHRUnsafe@ and @vkGetDisplayPlaneSupportedDisplaysKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayPlaneSupportedDisplaysKHR@ is an alias
+--           of @vkGetDisplayPlaneSupportedDisplaysKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayPlaneSupportedDisplaysKHRSafe@.
+--
+vkGetDisplayPlaneSupportedDisplaysKHR ::
+                                      VkPhysicalDevice -- ^ physicalDevice
+                                                       ->
+                                        Word32 -- ^ planeIndex
+                                               -> Ptr Word32 -- ^ pDisplayCount
+                                                             -> Ptr VkDisplayKHR -- ^ pDisplays
+                                                                                 -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDisplayPlaneSupportedDisplaysKHR
+  = vkGetDisplayPlaneSupportedDisplaysKHRUnsafe
+#else
+vkGetDisplayPlaneSupportedDisplaysKHR
+  = vkGetDisplayPlaneSupportedDisplaysKHRSafe
+
+#endif
+{-# INLINE vkGetDisplayPlaneSupportedDisplaysKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -610,7 +780,7 @@
      FunPtr HS_vkGetDisplayPlaneSupportedDisplaysKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDisplayPlaneSupportedDisplaysKHR ::
+               unwrapVkGetDisplayPlaneSupportedDisplaysKHRUnsafe ::
                PFN_vkGetDisplayPlaneSupportedDisplaysKHR ->
                  HS_vkGetDisplayPlaneSupportedDisplaysKHR
 
@@ -625,9 +795,10 @@
         vkProcSymbol = _VkGetDisplayPlaneSupportedDisplaysKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDisplayPlaneSupportedDisplaysKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDisplayPlaneSupportedDisplaysKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetDisplayPlaneSupportedDisplaysKHRSafe
 
@@ -681,12 +852,15 @@
 --
 -- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDisplayModePropertiesKHRUnsafe@ and @vkGetDisplayModePropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayModePropertiesKHR@ is an alias
+--           of @vkGetDisplayModePropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayModePropertiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetDisplayModePropertiesKHR"
-               vkGetDisplayModePropertiesKHR ::
+               vkGetDisplayModePropertiesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkDisplayKHR -- ^ display
@@ -696,18 +870,19 @@
                                                                 -> IO VkResult
 
 #else
-vkGetDisplayModePropertiesKHR ::
-                              VkPhysicalDevice -- ^ physicalDevice
-                                               ->
-                                VkDisplayKHR -- ^ display
-                                             ->
-                                  Ptr Word32 -- ^ pPropertyCount
-                                             -> Ptr VkDisplayModePropertiesKHR -- ^ pProperties
-                                                                               -> IO VkResult
-vkGetDisplayModePropertiesKHR
-  = unsafeDupablePerformIO (vkGetProc @VkGetDisplayModePropertiesKHR)
+vkGetDisplayModePropertiesKHRUnsafe ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     ->
+                                      VkDisplayKHR -- ^ display
+                                                   ->
+                                        Ptr Word32 -- ^ pPropertyCount
+                                                   -> Ptr VkDisplayModePropertiesKHR -- ^ pProperties
+                                                                                     -> IO VkResult
+vkGetDisplayModePropertiesKHRUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDisplayModePropertiesKHR)
 
-{-# NOINLINE vkGetDisplayModePropertiesKHR #-}
+{-# NOINLINE vkGetDisplayModePropertiesKHRUnsafe #-}
 #endif
 
 -- |
@@ -736,9 +911,12 @@
 --
 -- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDisplayModePropertiesKHRUnsafe@ and @vkGetDisplayModePropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayModePropertiesKHR@ is an alias
+--           of @vkGetDisplayModePropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayModePropertiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetDisplayModePropertiesKHR"
                vkGetDisplayModePropertiesKHRSafe ::
@@ -766,6 +944,53 @@
 {-# NOINLINE vkGetDisplayModePropertiesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetDisplayModePropertiesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkDisplayKHR display
+-- >     , uint32_t* pPropertyCount
+-- >     , VkDisplayModePropertiesKHR* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayModePropertiesKHR <- vkGetInstanceProc @VkGetDisplayModePropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
+--
+-- __Note:__ @vkGetDisplayModePropertiesKHRUnsafe@ and @vkGetDisplayModePropertiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayModePropertiesKHR@ is an alias
+--           of @vkGetDisplayModePropertiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayModePropertiesKHRSafe@.
+--
+vkGetDisplayModePropertiesKHR ::
+                              VkPhysicalDevice -- ^ physicalDevice
+                                               ->
+                                VkDisplayKHR -- ^ display
+                                             ->
+                                  Ptr Word32 -- ^ pPropertyCount
+                                             -> Ptr VkDisplayModePropertiesKHR -- ^ pProperties
+                                                                               -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDisplayModePropertiesKHR = vkGetDisplayModePropertiesKHRUnsafe
+#else
+vkGetDisplayModePropertiesKHR = vkGetDisplayModePropertiesKHRSafe
+
+#endif
+{-# INLINE vkGetDisplayModePropertiesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -791,7 +1016,7 @@
      FunPtr HS_vkGetDisplayModePropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDisplayModePropertiesKHR ::
+               unwrapVkGetDisplayModePropertiesKHRUnsafe ::
                PFN_vkGetDisplayModePropertiesKHR ->
                  HS_vkGetDisplayModePropertiesKHR
 
@@ -806,9 +1031,9 @@
         vkProcSymbol = _VkGetDisplayModePropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDisplayModePropertiesKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetDisplayModePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetDisplayModePropertiesKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -859,12 +1084,15 @@
 --
 -- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateDisplayModeKHRUnsafe@ and @vkCreateDisplayModeKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDisplayModeKHR@ is an alias
+--           of @vkCreateDisplayModeKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDisplayModeKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateDisplayModeKHR"
-               vkCreateDisplayModeKHR ::
+               vkCreateDisplayModeKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkDisplayKHR -- ^ display
@@ -876,20 +1104,20 @@
                                                                        -> IO VkResult
 
 #else
-vkCreateDisplayModeKHR ::
-                       VkPhysicalDevice -- ^ physicalDevice
-                                        ->
-                         VkDisplayKHR -- ^ display
-                                      ->
-                           Ptr VkDisplayModeCreateInfoKHR -- ^ pCreateInfo
-                                                          ->
-                             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> Ptr VkDisplayModeKHR -- ^ pMode
-                                                                               -> IO VkResult
-vkCreateDisplayModeKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateDisplayModeKHR)
+vkCreateDisplayModeKHRUnsafe ::
+                             VkPhysicalDevice -- ^ physicalDevice
+                                              ->
+                               VkDisplayKHR -- ^ display
+                                            ->
+                                 Ptr VkDisplayModeCreateInfoKHR -- ^ pCreateInfo
+                                                                ->
+                                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> Ptr VkDisplayModeKHR -- ^ pMode
+                                                                                     -> IO VkResult
+vkCreateDisplayModeKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDisplayModeKHR)
 
-{-# NOINLINE vkCreateDisplayModeKHR #-}
+{-# NOINLINE vkCreateDisplayModeKHRUnsafe #-}
 #endif
 
 -- |
@@ -919,9 +1147,12 @@
 --
 -- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateDisplayModeKHRUnsafe@ and @vkCreateDisplayModeKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDisplayModeKHR@ is an alias
+--           of @vkCreateDisplayModeKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDisplayModeKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateDisplayModeKHR"
                vkCreateDisplayModeKHRSafe ::
@@ -952,6 +1183,56 @@
 {-# NOINLINE vkCreateDisplayModeKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkCreateDisplayModeKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkDisplayKHR display
+-- >     , const VkDisplayModeCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDisplayModeKHR* pMode
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayModeKHR vkCreateDisplayModeKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDisplayModeKHR <- vkGetInstanceProc @VkCreateDisplayModeKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
+--
+-- __Note:__ @vkCreateDisplayModeKHRUnsafe@ and @vkCreateDisplayModeKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDisplayModeKHR@ is an alias
+--           of @vkCreateDisplayModeKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDisplayModeKHRSafe@.
+--
+vkCreateDisplayModeKHR ::
+                       VkPhysicalDevice -- ^ physicalDevice
+                                        ->
+                         VkDisplayKHR -- ^ display
+                                      ->
+                           Ptr VkDisplayModeCreateInfoKHR -- ^ pCreateInfo
+                                                          ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkDisplayModeKHR -- ^ pMode
+                                                                               -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateDisplayModeKHR = vkCreateDisplayModeKHRUnsafe
+#else
+vkCreateDisplayModeKHR = vkCreateDisplayModeKHRSafe
+
+#endif
+{-# INLINE vkCreateDisplayModeKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
@@ -978,8 +1259,9 @@
 
 type PFN_vkCreateDisplayModeKHR = FunPtr HS_vkCreateDisplayModeKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateDisplayModeKHR
-               :: PFN_vkCreateDisplayModeKHR -> HS_vkCreateDisplayModeKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDisplayModeKHRUnsafe ::
+               PFN_vkCreateDisplayModeKHR -> HS_vkCreateDisplayModeKHR
 
 foreign import ccall safe "dynamic"
                unwrapVkCreateDisplayModeKHRSafe ::
@@ -991,9 +1273,9 @@
         vkProcSymbol = _VkCreateDisplayModeKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDisplayModeKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDisplayModeKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateDisplayModeKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -1046,12 +1328,15 @@
 --
 -- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDisplayPlaneCapabilitiesKHRUnsafe@ and @vkGetDisplayPlaneCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayPlaneCapabilitiesKHR@ is an alias
+--           of @vkGetDisplayPlaneCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayPlaneCapabilitiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetDisplayPlaneCapabilitiesKHR"
-               vkGetDisplayPlaneCapabilitiesKHR ::
+               vkGetDisplayPlaneCapabilitiesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkDisplayModeKHR -- ^ mode
@@ -1061,19 +1346,20 @@
                                                                -> IO VkResult
 
 #else
-vkGetDisplayPlaneCapabilitiesKHR ::
-                                 VkPhysicalDevice -- ^ physicalDevice
+vkGetDisplayPlaneCapabilitiesKHRUnsafe ::
+                                       VkPhysicalDevice -- ^ physicalDevice
+                                                        ->
+                                         VkDisplayModeKHR -- ^ mode
+                                                          ->
+                                           Word32 -- ^ planeIndex
                                                   ->
-                                   VkDisplayModeKHR -- ^ mode
-                                                    ->
-                                     Word32 -- ^ planeIndex
-                                            -> Ptr VkDisplayPlaneCapabilitiesKHR -- ^ pCapabilities
-                                                                                 -> IO VkResult
-vkGetDisplayPlaneCapabilitiesKHR
+                                             Ptr VkDisplayPlaneCapabilitiesKHR -- ^ pCapabilities
+                                                                               -> IO VkResult
+vkGetDisplayPlaneCapabilitiesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetDisplayPlaneCapabilitiesKHR)
+      (vkGetProcUnsafe @VkGetDisplayPlaneCapabilitiesKHR)
 
-{-# NOINLINE vkGetDisplayPlaneCapabilitiesKHR #-}
+{-# NOINLINE vkGetDisplayPlaneCapabilitiesKHRUnsafe #-}
 #endif
 
 -- |
@@ -1102,9 +1388,12 @@
 --
 -- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDisplayPlaneCapabilitiesKHRUnsafe@ and @vkGetDisplayPlaneCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayPlaneCapabilitiesKHR@ is an alias
+--           of @vkGetDisplayPlaneCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayPlaneCapabilitiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetDisplayPlaneCapabilitiesKHR"
                vkGetDisplayPlaneCapabilitiesKHRSafe ::
@@ -1132,6 +1421,55 @@
 {-# NOINLINE vkGetDisplayPlaneCapabilitiesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetDisplayPlaneCapabilitiesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkDisplayModeKHR mode
+-- >     , uint32_t planeIndex
+-- >     , VkDisplayPlaneCapabilitiesKHR* pCapabilities
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayPlaneCapabilitiesKHR <- vkGetInstanceProc @VkGetDisplayPlaneCapabilitiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
+--
+-- __Note:__ @vkGetDisplayPlaneCapabilitiesKHRUnsafe@ and @vkGetDisplayPlaneCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDisplayPlaneCapabilitiesKHR@ is an alias
+--           of @vkGetDisplayPlaneCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDisplayPlaneCapabilitiesKHRSafe@.
+--
+vkGetDisplayPlaneCapabilitiesKHR ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  ->
+                                   VkDisplayModeKHR -- ^ mode
+                                                    ->
+                                     Word32 -- ^ planeIndex
+                                            -> Ptr VkDisplayPlaneCapabilitiesKHR -- ^ pCapabilities
+                                                                                 -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDisplayPlaneCapabilitiesKHR
+  = vkGetDisplayPlaneCapabilitiesKHRUnsafe
+#else
+vkGetDisplayPlaneCapabilitiesKHR
+  = vkGetDisplayPlaneCapabilitiesKHRSafe
+
+#endif
+{-# INLINE vkGetDisplayPlaneCapabilitiesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -1157,7 +1495,7 @@
      FunPtr HS_vkGetDisplayPlaneCapabilitiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDisplayPlaneCapabilitiesKHR ::
+               unwrapVkGetDisplayPlaneCapabilitiesKHRUnsafe ::
                PFN_vkGetDisplayPlaneCapabilitiesKHR ->
                  HS_vkGetDisplayPlaneCapabilitiesKHR
 
@@ -1172,9 +1510,10 @@
         vkProcSymbol = _VkGetDisplayPlaneCapabilitiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDisplayPlaneCapabilitiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDisplayPlaneCapabilitiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilitiesKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -1227,12 +1566,15 @@
 --
 -- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateDisplayPlaneSurfaceKHRUnsafe@ and @vkCreateDisplayPlaneSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDisplayPlaneSurfaceKHR@ is an alias
+--           of @vkCreateDisplayPlaneSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDisplayPlaneSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateDisplayPlaneSurfaceKHR"
-               vkCreateDisplayPlaneSurfaceKHR ::
+               vkCreateDisplayPlaneSurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkDisplaySurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -1242,19 +1584,20 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateDisplayPlaneSurfaceKHR ::
-                               VkInstance -- ^ instance
-                                          ->
-                                 Ptr VkDisplaySurfaceCreateInfoKHR -- ^ pCreateInfo
+vkCreateDisplayPlaneSurfaceKHRUnsafe ::
+                                     VkInstance -- ^ instance
+                                                ->
+                                       Ptr VkDisplaySurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                                         ->
+                                         Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                    ->
-                                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                                 -> IO VkResult
-vkCreateDisplayPlaneSurfaceKHR
+                                           Ptr VkSurfaceKHR -- ^ pSurface
+                                                            -> IO VkResult
+vkCreateDisplayPlaneSurfaceKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkCreateDisplayPlaneSurfaceKHR)
+      (vkGetProcUnsafe @VkCreateDisplayPlaneSurfaceKHR)
 
-{-# NOINLINE vkCreateDisplayPlaneSurfaceKHR #-}
+{-# NOINLINE vkCreateDisplayPlaneSurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -1283,9 +1626,12 @@
 --
 -- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateDisplayPlaneSurfaceKHRUnsafe@ and @vkCreateDisplayPlaneSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDisplayPlaneSurfaceKHR@ is an alias
+--           of @vkCreateDisplayPlaneSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDisplayPlaneSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateDisplayPlaneSurfaceKHR"
                vkCreateDisplayPlaneSurfaceKHRSafe ::
@@ -1313,6 +1659,54 @@
 {-# NOINLINE vkCreateDisplayPlaneSurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDisplayPlaneSurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkDisplaySurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDisplayPlaneSurfaceKHR <- vkGetInstanceProc @VkCreateDisplayPlaneSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
+--
+-- __Note:__ @vkCreateDisplayPlaneSurfaceKHRUnsafe@ and @vkCreateDisplayPlaneSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDisplayPlaneSurfaceKHR@ is an alias
+--           of @vkCreateDisplayPlaneSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDisplayPlaneSurfaceKHRSafe@.
+--
+vkCreateDisplayPlaneSurfaceKHR ::
+                               VkInstance -- ^ instance
+                                          ->
+                                 Ptr VkDisplaySurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                                   ->
+                                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                                 -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateDisplayPlaneSurfaceKHR
+  = vkCreateDisplayPlaneSurfaceKHRUnsafe
+#else
+vkCreateDisplayPlaneSurfaceKHR = vkCreateDisplayPlaneSurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateDisplayPlaneSurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -1338,7 +1732,7 @@
      FunPtr HS_vkCreateDisplayPlaneSurfaceKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDisplayPlaneSurfaceKHR ::
+               unwrapVkCreateDisplayPlaneSurfaceKHRUnsafe ::
                PFN_vkCreateDisplayPlaneSurfaceKHR ->
                  HS_vkCreateDisplayPlaneSurfaceKHR
 
@@ -1353,9 +1747,9 @@
         vkProcSymbol = _VkCreateDisplayPlaneSurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDisplayPlaneSurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateDisplayPlaneSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateDisplayPlaneSurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
@@ -40,8 +40,8 @@
         -- > #include "vk_platform.h"
         VkCreateSharedSwapchainsKHR, pattern VkCreateSharedSwapchainsKHR,
         HS_vkCreateSharedSwapchainsKHR, PFN_vkCreateSharedSwapchainsKHR,
-        vkCreateSharedSwapchainsKHR, vkCreateSharedSwapchainsKHRSafe,
-        module Graphics.Vulkan.Marshal,
+        vkCreateSharedSwapchainsKHR, vkCreateSharedSwapchainsKHRUnsafe,
+        vkCreateSharedSwapchainsKHRSafe, module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.Color,
         module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
         module Graphics.Vulkan.Types.Enum.Format,
@@ -137,12 +137,15 @@
 --
 -- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateSharedSwapchainsKHRUnsafe@ and @vkCreateSharedSwapchainsKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSharedSwapchainsKHR@ is an alias
+--           of @vkCreateSharedSwapchainsKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSharedSwapchainsKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateSharedSwapchainsKHR"
-               vkCreateSharedSwapchainsKHR ::
+               vkCreateSharedSwapchainsKHRUnsafe ::
                VkDevice -- ^ device
                         ->
                  Word32 -- ^ swapchainCount
@@ -154,20 +157,22 @@
                                                                      -> IO VkResult
 
 #else
-vkCreateSharedSwapchainsKHR ::
-                            VkDevice -- ^ device
-                                     ->
-                              Word32 -- ^ swapchainCount
-                                     ->
-                                Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfos
-                                                             ->
-                                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> Ptr VkSwapchainKHR -- ^ pSwapchains
-                                                                                  -> IO VkResult
-vkCreateSharedSwapchainsKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateSharedSwapchainsKHR)
+vkCreateSharedSwapchainsKHRUnsafe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    Word32 -- ^ swapchainCount
+                                           ->
+                                      Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfos
+                                                                   ->
+                                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  ->
+                                          Ptr VkSwapchainKHR -- ^ pSwapchains
+                                                             -> IO VkResult
+vkCreateSharedSwapchainsKHRUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateSharedSwapchainsKHR)
 
-{-# NOINLINE vkCreateSharedSwapchainsKHR #-}
+{-# NOINLINE vkCreateSharedSwapchainsKHRUnsafe #-}
 #endif
 
 -- |
@@ -197,9 +202,12 @@
 --
 -- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateSharedSwapchainsKHRUnsafe@ and @vkCreateSharedSwapchainsKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSharedSwapchainsKHR@ is an alias
+--           of @vkCreateSharedSwapchainsKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSharedSwapchainsKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateSharedSwapchainsKHR"
                vkCreateSharedSwapchainsKHRSafe ::
@@ -231,6 +239,56 @@
 {-# NOINLINE vkCreateSharedSwapchainsKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkCreateSharedSwapchainsKHR
+-- >     ( VkDevice device
+-- >     , uint32_t swapchainCount
+-- >     , const VkSwapchainCreateInfoKHR* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSwapchainKHR* pSwapchains
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSharedSwapchainsKHR <- vkGetDeviceProc @VkCreateSharedSwapchainsKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
+--
+-- __Note:__ @vkCreateSharedSwapchainsKHRUnsafe@ and @vkCreateSharedSwapchainsKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSharedSwapchainsKHR@ is an alias
+--           of @vkCreateSharedSwapchainsKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSharedSwapchainsKHRSafe@.
+--
+vkCreateSharedSwapchainsKHR ::
+                            VkDevice -- ^ device
+                                     ->
+                              Word32 -- ^ swapchainCount
+                                     ->
+                                Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfos
+                                                             ->
+                                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> Ptr VkSwapchainKHR -- ^ pSwapchains
+                                                                                  -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateSharedSwapchainsKHR = vkCreateSharedSwapchainsKHRUnsafe
+#else
+vkCreateSharedSwapchainsKHR = vkCreateSharedSwapchainsKHRSafe
+
+#endif
+{-# INLINE vkCreateSharedSwapchainsKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -259,7 +317,7 @@
      FunPtr HS_vkCreateSharedSwapchainsKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateSharedSwapchainsKHR ::
+               unwrapVkCreateSharedSwapchainsKHRUnsafe ::
                PFN_vkCreateSharedSwapchainsKHR -> HS_vkCreateSharedSwapchainsKHR
 
 foreign import ccall safe "dynamic"
@@ -272,9 +330,9 @@
         vkProcSymbol = _VkCreateSharedSwapchainsKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSharedSwapchainsKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateSharedSwapchainsKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateSharedSwapchainsKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs
@@ -0,0 +1,224 @@
+{-# OPTIONS_GHC -fno-warn-orphans#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE FlexibleInstances        #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE TypeFamilies             #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_KHR_draw_indirect_count
+       (-- * Vulkan extension: @VK_KHR_draw_indirect_count@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Piers Daniell @pdaniell-nv@
+        --
+        -- author: @KHR@
+        --
+        -- type: @device@
+        --
+        -- Extension number: @170@
+        VkCmdDrawIndirectCountKHR, pattern VkCmdDrawIndirectCountKHR,
+        HS_vkCmdDrawIndirectCountKHR, PFN_vkCmdDrawIndirectCountKHR,
+        VkCmdDrawIndexedIndirectCountKHR,
+        pattern VkCmdDrawIndexedIndirectCountKHR,
+        HS_vkCmdDrawIndexedIndirectCountKHR,
+        PFN_vkCmdDrawIndexedIndirectCountKHR,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Handles,
+        VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION,
+        pattern VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION,
+        VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
+        pattern VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME)
+       where
+import           GHC.Ptr                         (Ptr (..))
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Proc    (VulkanProc (..))
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Handles
+
+pattern VkCmdDrawIndirectCountKHR :: CString
+
+pattern VkCmdDrawIndirectCountKHR <-
+        (is_VkCmdDrawIndirectCountKHR -> True)
+  where VkCmdDrawIndirectCountKHR = _VkCmdDrawIndirectCountKHR
+
+{-# INLINE _VkCmdDrawIndirectCountKHR #-}
+
+_VkCmdDrawIndirectCountKHR :: CString
+_VkCmdDrawIndirectCountKHR = Ptr "vkCmdDrawIndirectCountKHR\NUL"#
+
+{-# INLINE is_VkCmdDrawIndirectCountKHR #-}
+
+is_VkCmdDrawIndirectCountKHR :: CString -> Bool
+is_VkCmdDrawIndirectCountKHR
+  = (EQ ==) . cmpCStrings _VkCmdDrawIndirectCountKHR
+
+type VkCmdDrawIndirectCountKHR = "vkCmdDrawIndirectCountKHR"
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndirectCountKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkBuffer countBuffer
+--   >     , VkDeviceSize countBufferOffset
+--   >     , uint32_t maxDrawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR registry at www.khronos.org>
+type HS_vkCmdDrawIndirectCountKHR =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                ->
+         VkDeviceSize -- ^ offset
+                      ->
+           VkBuffer -- ^ countBuffer
+                    -> VkDeviceSize -- ^ countBufferOffset
+                                    -> Word32 -- ^ maxDrawCount
+                                              -> Word32 -- ^ stride
+                                                        -> IO ()
+
+type PFN_vkCmdDrawIndirectCountKHR =
+     FunPtr HS_vkCmdDrawIndirectCountKHR
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDrawIndirectCountKHRUnsafe ::
+               PFN_vkCmdDrawIndirectCountKHR -> HS_vkCmdDrawIndirectCountKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndirectCountKHRSafe ::
+               PFN_vkCmdDrawIndirectCountKHR -> HS_vkCmdDrawIndirectCountKHR
+
+instance VulkanProc "vkCmdDrawIndirectCountKHR" where
+        type VkProcType "vkCmdDrawIndirectCountKHR" =
+             HS_vkCmdDrawIndirectCountKHR
+        vkProcSymbol = _VkCmdDrawIndirectCountKHR
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectCountKHRUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexedIndirectCountKHR :: CString
+
+pattern VkCmdDrawIndexedIndirectCountKHR <-
+        (is_VkCmdDrawIndexedIndirectCountKHR -> True)
+  where VkCmdDrawIndexedIndirectCountKHR
+          = _VkCmdDrawIndexedIndirectCountKHR
+
+{-# INLINE _VkCmdDrawIndexedIndirectCountKHR #-}
+
+_VkCmdDrawIndexedIndirectCountKHR :: CString
+_VkCmdDrawIndexedIndirectCountKHR
+  = Ptr "vkCmdDrawIndexedIndirectCountKHR\NUL"#
+
+{-# INLINE is_VkCmdDrawIndexedIndirectCountKHR #-}
+
+is_VkCmdDrawIndexedIndirectCountKHR :: CString -> Bool
+is_VkCmdDrawIndexedIndirectCountKHR
+  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirectCountKHR
+
+type VkCmdDrawIndexedIndirectCountKHR =
+     "vkCmdDrawIndexedIndirectCountKHR"
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexedIndirectCountKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkBuffer countBuffer
+--   >     , VkDeviceSize countBufferOffset
+--   >     , uint32_t maxDrawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR registry at www.khronos.org>
+type HS_vkCmdDrawIndexedIndirectCountKHR =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                ->
+         VkDeviceSize -- ^ offset
+                      ->
+           VkBuffer -- ^ countBuffer
+                    -> VkDeviceSize -- ^ countBufferOffset
+                                    -> Word32 -- ^ maxDrawCount
+                                              -> Word32 -- ^ stride
+                                                        -> IO ()
+
+type PFN_vkCmdDrawIndexedIndirectCountKHR =
+     FunPtr HS_vkCmdDrawIndexedIndirectCountKHR
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectCountKHRUnsafe ::
+               PFN_vkCmdDrawIndexedIndirectCountKHR ->
+                 HS_vkCmdDrawIndexedIndirectCountKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectCountKHRSafe ::
+               PFN_vkCmdDrawIndexedIndirectCountKHR ->
+                 HS_vkCmdDrawIndexedIndirectCountKHR
+
+instance VulkanProc "vkCmdDrawIndexedIndirectCountKHR" where
+        type VkProcType "vkCmdDrawIndexedIndirectCountKHR" =
+             HS_vkCmdDrawIndexedIndirectCountKHR
+        vkProcSymbol = _VkCmdDrawIndexedIndirectCountKHR
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCmdDrawIndexedIndirectCountKHRUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION :: (Num a, Eq a) =>
+        a
+
+pattern VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1
+
+type VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1
+
+pattern VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: CString
+
+pattern VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME <-
+        (is_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME -> True)
+  where VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+          = _VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+
+{-# INLINE _VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME #-}
+
+_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: CString
+_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+  = Ptr "VK_KHR_draw_indirect_count\NUL"#
+
+{-# INLINE is_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME #-}
+
+is_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: CString -> Bool
+is_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+
+type VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME =
+     "VK_KHR_draw_indirect_count"
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs
@@ -11,7 +11,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @KHR@
         --
@@ -111,7 +112,7 @@
      FunPtr HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalFencePropertiesKHR ::
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ->
                  HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
 
@@ -127,10 +128,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceExternalFencePropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @KHR@
         --
@@ -92,7 +93,8 @@
 
 type PFN_vkImportFenceFdKHR = FunPtr HS_vkImportFenceFdKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkImportFenceFdKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkImportFenceFdKHRUnsafe ::
                PFN_vkImportFenceFdKHR -> HS_vkImportFenceFdKHR
 
 foreign import ccall safe "dynamic" unwrapVkImportFenceFdKHRSafe ::
@@ -103,9 +105,9 @@
         vkProcSymbol = _VkImportFenceFdKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkImportFenceFdKHR
+        unwrapVkProcPtrUnsafe = unwrapVkImportFenceFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkImportFenceFdKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -146,8 +148,8 @@
 
 type PFN_vkGetFenceFdKHR = FunPtr HS_vkGetFenceFdKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkGetFenceFdKHR ::
-               PFN_vkGetFenceFdKHR -> HS_vkGetFenceFdKHR
+foreign import ccall unsafe "dynamic" unwrapVkGetFenceFdKHRUnsafe
+               :: PFN_vkGetFenceFdKHR -> HS_vkGetFenceFdKHR
 
 foreign import ccall safe "dynamic" unwrapVkGetFenceFdKHRSafe ::
                PFN_vkGetFenceFdKHR -> HS_vkGetFenceFdKHR
@@ -157,9 +159,9 @@
         vkProcSymbol = _VkGetFenceFdKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetFenceFdKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetFenceFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetFenceFdKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @KHR@
         --
@@ -103,7 +104,7 @@
      FunPtr HS_vkImportFenceWin32HandleKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkImportFenceWin32HandleKHR ::
+               unwrapVkImportFenceWin32HandleKHRUnsafe ::
                PFN_vkImportFenceWin32HandleKHR -> HS_vkImportFenceWin32HandleKHR
 
 foreign import ccall safe "dynamic"
@@ -116,9 +117,9 @@
         vkProcSymbol = _VkImportFenceWin32HandleKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkImportFenceWin32HandleKHR
+        unwrapVkProcPtrUnsafe = unwrapVkImportFenceWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkImportFenceWin32HandleKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -164,7 +165,7 @@
      FunPtr HS_vkGetFenceWin32HandleKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetFenceWin32HandleKHR ::
+               unwrapVkGetFenceWin32HandleKHRUnsafe ::
                PFN_vkGetFenceWin32HandleKHR -> HS_vkGetFenceWin32HandleKHR
 
 foreign import ccall safe "dynamic"
@@ -177,9 +178,9 @@
         vkProcSymbol = _VkGetFenceWin32HandleKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetFenceWin32HandleKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetFenceWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetFenceWin32HandleKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -124,7 +125,7 @@
      FunPtr HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHR ::
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ->
                  HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
 
@@ -141,10 +142,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceExternalBufferPropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -95,8 +96,8 @@
 
 type PFN_vkGetMemoryFdKHR = FunPtr HS_vkGetMemoryFdKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkGetMemoryFdKHR ::
-               PFN_vkGetMemoryFdKHR -> HS_vkGetMemoryFdKHR
+foreign import ccall unsafe "dynamic" unwrapVkGetMemoryFdKHRUnsafe
+               :: PFN_vkGetMemoryFdKHR -> HS_vkGetMemoryFdKHR
 
 foreign import ccall safe "dynamic" unwrapVkGetMemoryFdKHRSafe ::
                PFN_vkGetMemoryFdKHR -> HS_vkGetMemoryFdKHR
@@ -106,9 +107,9 @@
         vkProcSymbol = _VkGetMemoryFdKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryFdKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetMemoryFdKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -157,7 +158,7 @@
      FunPtr HS_vkGetMemoryFdPropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetMemoryFdPropertiesKHR ::
+               unwrapVkGetMemoryFdPropertiesKHRUnsafe ::
                PFN_vkGetMemoryFdPropertiesKHR -> HS_vkGetMemoryFdPropertiesKHR
 
 foreign import ccall safe "dynamic"
@@ -170,9 +171,9 @@
         vkProcSymbol = _VkGetMemoryFdPropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryFdPropertiesKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryFdPropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetMemoryFdPropertiesKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -106,7 +107,7 @@
      FunPtr HS_vkGetMemoryWin32HandleKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetMemoryWin32HandleKHR ::
+               unwrapVkGetMemoryWin32HandleKHRUnsafe ::
                PFN_vkGetMemoryWin32HandleKHR -> HS_vkGetMemoryWin32HandleKHR
 
 foreign import ccall safe "dynamic"
@@ -119,9 +120,9 @@
         vkProcSymbol = _VkGetMemoryWin32HandleKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryWin32HandleKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -173,7 +174,7 @@
      FunPtr HS_vkGetMemoryWin32HandlePropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetMemoryWin32HandlePropertiesKHR ::
+               unwrapVkGetMemoryWin32HandlePropertiesKHRUnsafe ::
                PFN_vkGetMemoryWin32HandlePropertiesKHR ->
                  HS_vkGetMemoryWin32HandlePropertiesKHR
 
@@ -188,9 +189,10 @@
         vkProcSymbol = _VkGetMemoryWin32HandlePropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryWin32HandlePropertiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetMemoryWin32HandlePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandlePropertiesKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -114,7 +115,7 @@
      FunPtr HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHR ::
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ->
                  HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
@@ -131,10 +132,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -95,8 +96,9 @@
 
 type PFN_vkImportSemaphoreFdKHR = FunPtr HS_vkImportSemaphoreFdKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkImportSemaphoreFdKHR
-               :: PFN_vkImportSemaphoreFdKHR -> HS_vkImportSemaphoreFdKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkImportSemaphoreFdKHRUnsafe ::
+               PFN_vkImportSemaphoreFdKHR -> HS_vkImportSemaphoreFdKHR
 
 foreign import ccall safe "dynamic"
                unwrapVkImportSemaphoreFdKHRSafe ::
@@ -108,9 +110,9 @@
         vkProcSymbol = _VkImportSemaphoreFdKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkImportSemaphoreFdKHR
+        unwrapVkProcPtrUnsafe = unwrapVkImportSemaphoreFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkImportSemaphoreFdKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -151,7 +153,8 @@
 
 type PFN_vkGetSemaphoreFdKHR = FunPtr HS_vkGetSemaphoreFdKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkGetSemaphoreFdKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetSemaphoreFdKHRUnsafe ::
                PFN_vkGetSemaphoreFdKHR -> HS_vkGetSemaphoreFdKHR
 
 foreign import ccall safe "dynamic" unwrapVkGetSemaphoreFdKHRSafe
@@ -162,9 +165,9 @@
         vkProcSymbol = _VkGetSemaphoreFdKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetSemaphoreFdKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetSemaphoreFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetSemaphoreFdKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -114,7 +115,7 @@
      FunPtr HS_vkImportSemaphoreWin32HandleKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkImportSemaphoreWin32HandleKHR ::
+               unwrapVkImportSemaphoreWin32HandleKHRUnsafe ::
                PFN_vkImportSemaphoreWin32HandleKHR ->
                  HS_vkImportSemaphoreWin32HandleKHR
 
@@ -129,9 +130,9 @@
         vkProcSymbol = _VkImportSemaphoreWin32HandleKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkImportSemaphoreWin32HandleKHR
+        unwrapVkProcPtrUnsafe = unwrapVkImportSemaphoreWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkImportSemaphoreWin32HandleKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -178,7 +179,7 @@
      FunPtr HS_vkGetSemaphoreWin32HandleKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetSemaphoreWin32HandleKHR ::
+               unwrapVkGetSemaphoreWin32HandleKHRUnsafe ::
                PFN_vkGetSemaphoreWin32HandleKHR -> HS_vkGetSemaphoreWin32HandleKHR
 
 foreign import ccall safe "dynamic"
@@ -191,9 +192,9 @@
         vkProcSymbol = _VkGetSemaphoreWin32HandleKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetSemaphoreWin32HandleKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetSemaphoreWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetSemaphoreWin32HandleKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs
@@ -0,0 +1,415 @@
+{-# OPTIONS_GHC -fno-warn-orphans#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE FlexibleInstances        #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE TypeFamilies             #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_KHR_get_display_properties2
+       (-- * Vulkan extension: @VK_KHR_get_display_properties2@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @James Jones @cubanismo@
+        --
+        -- author: @KHR@
+        --
+        -- type: @instance@
+        --
+        -- Extension number: @122@
+        --
+        -- Required extensions: 'VK_KHR_display'.
+        --
+
+        -- ** Required extensions: 'VK_KHR_display'.
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Struct.Display,
+        module Graphics.Vulkan.Types.Enum.Display,
+        module Graphics.Vulkan.Types.Struct.Extent,
+        module Graphics.Vulkan.Types.Struct.Offset,
+        module Graphics.Vulkan.Types.Enum.StructureType,
+        module Graphics.Vulkan.Types.Enum.Surface,
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceDisplayProperties2KHR,
+        pattern VkGetPhysicalDeviceDisplayProperties2KHR,
+        HS_vkGetPhysicalDeviceDisplayProperties2KHR,
+        PFN_vkGetPhysicalDeviceDisplayProperties2KHR,
+        VkGetPhysicalDeviceDisplayPlaneProperties2KHR,
+        pattern VkGetPhysicalDeviceDisplayPlaneProperties2KHR,
+        HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR,
+        PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR,
+        VkGetDisplayModeProperties2KHR,
+        pattern VkGetDisplayModeProperties2KHR,
+        HS_vkGetDisplayModeProperties2KHR,
+        PFN_vkGetDisplayModeProperties2KHR,
+        VkGetDisplayPlaneCapabilities2KHR,
+        pattern VkGetDisplayPlaneCapabilities2KHR,
+        HS_vkGetDisplayPlaneCapabilities2KHR,
+        PFN_vkGetDisplayPlaneCapabilities2KHR,
+        module Graphics.Vulkan.Types.Enum.Result,
+        module Graphics.Vulkan.Types.Handles,
+        VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION,
+        pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION,
+        VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
+        pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR,
+        pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,
+        pattern VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR,
+        pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR,
+        pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)
+       where
+import           GHC.Ptr                                  (Ptr (..))
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Proc             (VulkanProc (..))
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Enum.Display
+import           Graphics.Vulkan.Types.Enum.Result
+import           Graphics.Vulkan.Types.Enum.StructureType
+import           Graphics.Vulkan.Types.Enum.Surface
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.Display
+import           Graphics.Vulkan.Types.Struct.Extent
+import           Graphics.Vulkan.Types.Struct.Offset
+
+pattern VkGetPhysicalDeviceDisplayProperties2KHR :: CString
+
+pattern VkGetPhysicalDeviceDisplayProperties2KHR <-
+        (is_VkGetPhysicalDeviceDisplayProperties2KHR -> True)
+  where VkGetPhysicalDeviceDisplayProperties2KHR
+          = _VkGetPhysicalDeviceDisplayProperties2KHR
+
+{-# INLINE _VkGetPhysicalDeviceDisplayProperties2KHR #-}
+
+_VkGetPhysicalDeviceDisplayProperties2KHR :: CString
+_VkGetPhysicalDeviceDisplayProperties2KHR
+  = Ptr "vkGetPhysicalDeviceDisplayProperties2KHR\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceDisplayProperties2KHR #-}
+
+is_VkGetPhysicalDeviceDisplayProperties2KHR :: CString -> Bool
+is_VkGetPhysicalDeviceDisplayProperties2KHR
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceDisplayProperties2KHR
+
+type VkGetPhysicalDeviceDisplayProperties2KHR =
+     "vkGetPhysicalDeviceDisplayProperties2KHR"
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPhysicalDeviceDisplayProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkDisplayProperties2KHR* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceDisplayProperties2KHR =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pPropertyCount
+                  -> Ptr VkDisplayProperties2KHR -- ^ pProperties
+                                                 -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceDisplayProperties2KHR =
+     FunPtr HS_vkGetPhysicalDeviceDisplayProperties2KHR
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceDisplayProperties2KHRUnsafe ::
+               PFN_vkGetPhysicalDeviceDisplayProperties2KHR ->
+                 HS_vkGetPhysicalDeviceDisplayProperties2KHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceDisplayProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceDisplayProperties2KHR ->
+                 HS_vkGetPhysicalDeviceDisplayProperties2KHR
+
+instance VulkanProc "vkGetPhysicalDeviceDisplayProperties2KHR"
+         where
+        type VkProcType "vkGetPhysicalDeviceDisplayProperties2KHR" =
+             HS_vkGetPhysicalDeviceDisplayProperties2KHR
+        vkProcSymbol = _VkGetPhysicalDeviceDisplayProperties2KHR
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceDisplayProperties2KHRUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceDisplayProperties2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceDisplayPlaneProperties2KHR :: CString
+
+pattern VkGetPhysicalDeviceDisplayPlaneProperties2KHR <-
+        (is_VkGetPhysicalDeviceDisplayPlaneProperties2KHR -> True)
+  where VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+          = _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+
+{-# INLINE _VkGetPhysicalDeviceDisplayPlaneProperties2KHR #-}
+
+_VkGetPhysicalDeviceDisplayPlaneProperties2KHR :: CString
+_VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+  = Ptr "vkGetPhysicalDeviceDisplayPlaneProperties2KHR\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceDisplayPlaneProperties2KHR #-}
+
+is_VkGetPhysicalDeviceDisplayPlaneProperties2KHR :: CString -> Bool
+is_VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+
+type VkGetPhysicalDeviceDisplayPlaneProperties2KHR =
+     "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkDisplayPlaneProperties2KHR* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pPropertyCount
+                  -> Ptr VkDisplayPlaneProperties2KHR -- ^ pProperties
+                                                      -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR =
+     FunPtr HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRUnsafe ::
+               PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ->
+                 HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ->
+                 HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+
+instance VulkanProc "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"
+         where
+        type VkProcType "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" =
+             HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+        vkProcSymbol = _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDisplayModeProperties2KHR :: CString
+
+pattern VkGetDisplayModeProperties2KHR <-
+        (is_VkGetDisplayModeProperties2KHR -> True)
+  where VkGetDisplayModeProperties2KHR
+          = _VkGetDisplayModeProperties2KHR
+
+{-# INLINE _VkGetDisplayModeProperties2KHR #-}
+
+_VkGetDisplayModeProperties2KHR :: CString
+_VkGetDisplayModeProperties2KHR
+  = Ptr "vkGetDisplayModeProperties2KHR\NUL"#
+
+{-# INLINE is_VkGetDisplayModeProperties2KHR #-}
+
+is_VkGetDisplayModeProperties2KHR :: CString -> Bool
+is_VkGetDisplayModeProperties2KHR
+  = (EQ ==) . cmpCStrings _VkGetDisplayModeProperties2KHR
+
+type VkGetDisplayModeProperties2KHR =
+     "vkGetDisplayModeProperties2KHR"
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetDisplayModeProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkDisplayKHR display
+--   >     , uint32_t* pPropertyCount
+--   >     , VkDisplayModeProperties2KHR* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR registry at www.khronos.org>
+type HS_vkGetDisplayModeProperties2KHR =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkDisplayKHR -- ^ display
+                    ->
+         Ptr Word32 -- ^ pPropertyCount
+                    -> Ptr VkDisplayModeProperties2KHR -- ^ pProperties
+                                                       -> IO VkResult
+
+type PFN_vkGetDisplayModeProperties2KHR =
+     FunPtr HS_vkGetDisplayModeProperties2KHR
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDisplayModeProperties2KHRUnsafe ::
+               PFN_vkGetDisplayModeProperties2KHR ->
+                 HS_vkGetDisplayModeProperties2KHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDisplayModeProperties2KHRSafe ::
+               PFN_vkGetDisplayModeProperties2KHR ->
+                 HS_vkGetDisplayModeProperties2KHR
+
+instance VulkanProc "vkGetDisplayModeProperties2KHR" where
+        type VkProcType "vkGetDisplayModeProperties2KHR" =
+             HS_vkGetDisplayModeProperties2KHR
+        vkProcSymbol = _VkGetDisplayModeProperties2KHR
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe = unwrapVkGetDisplayModeProperties2KHRUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDisplayModeProperties2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDisplayPlaneCapabilities2KHR :: CString
+
+pattern VkGetDisplayPlaneCapabilities2KHR <-
+        (is_VkGetDisplayPlaneCapabilities2KHR -> True)
+  where VkGetDisplayPlaneCapabilities2KHR
+          = _VkGetDisplayPlaneCapabilities2KHR
+
+{-# INLINE _VkGetDisplayPlaneCapabilities2KHR #-}
+
+_VkGetDisplayPlaneCapabilities2KHR :: CString
+_VkGetDisplayPlaneCapabilities2KHR
+  = Ptr "vkGetDisplayPlaneCapabilities2KHR\NUL"#
+
+{-# INLINE is_VkGetDisplayPlaneCapabilities2KHR #-}
+
+is_VkGetDisplayPlaneCapabilities2KHR :: CString -> Bool
+is_VkGetDisplayPlaneCapabilities2KHR
+  = (EQ ==) . cmpCStrings _VkGetDisplayPlaneCapabilities2KHR
+
+type VkGetDisplayPlaneCapabilities2KHR =
+     "vkGetDisplayPlaneCapabilities2KHR"
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetDisplayPlaneCapabilities2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo
+--   >     , VkDisplayPlaneCapabilities2KHR* pCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR registry at www.khronos.org>
+type HS_vkGetDisplayPlaneCapabilities2KHR =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkDisplayPlaneInfo2KHR -- ^ pDisplayPlaneInfo
+                                  ->
+         Ptr VkDisplayPlaneCapabilities2KHR -- ^ pCapabilities
+                                            -> IO VkResult
+
+type PFN_vkGetDisplayPlaneCapabilities2KHR =
+     FunPtr HS_vkGetDisplayPlaneCapabilities2KHR
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDisplayPlaneCapabilities2KHRUnsafe ::
+               PFN_vkGetDisplayPlaneCapabilities2KHR ->
+                 HS_vkGetDisplayPlaneCapabilities2KHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDisplayPlaneCapabilities2KHRSafe ::
+               PFN_vkGetDisplayPlaneCapabilities2KHR ->
+                 HS_vkGetDisplayPlaneCapabilities2KHR
+
+instance VulkanProc "vkGetDisplayPlaneCapabilities2KHR" where
+        type VkProcType "vkGetDisplayPlaneCapabilities2KHR" =
+             HS_vkGetDisplayPlaneCapabilities2KHR
+        vkProcSymbol = _VkGetDisplayPlaneCapabilities2KHR
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDisplayPlaneCapabilities2KHRUnsafe
+
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilities2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION ::
+        (Num a, Eq a) => a
+
+pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1
+
+type VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1
+
+pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME :: CString
+
+pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME <-
+        (is_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME -> True)
+  where VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+          = _VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+
+{-# INLINE _VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME #-}
+
+_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME :: CString
+_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+  = Ptr "VK_KHR_get_display_properties2\NUL"#
+
+{-# INLINE is_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME #-}
+
+is_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME ::
+                                                  CString -> Bool
+is_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+
+type VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME =
+     "VK_KHR_get_display_properties2"
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR =
+        VkStructureType 1000121000
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR =
+        VkStructureType 1000121001
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR =
+        VkStructureType 1000121002
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR =
+        VkStructureType 1000121003
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR =
+        VkStructureType 1000121004
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -117,7 +118,7 @@
      FunPtr HS_vkGetImageMemoryRequirements2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageMemoryRequirements2KHR ::
+               unwrapVkGetImageMemoryRequirements2KHRUnsafe ::
                PFN_vkGetImageMemoryRequirements2KHR ->
                  HS_vkGetImageMemoryRequirements2KHR
 
@@ -132,9 +133,10 @@
         vkProcSymbol = _VkGetImageMemoryRequirements2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetImageMemoryRequirements2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -182,7 +184,7 @@
      FunPtr HS_vkGetBufferMemoryRequirements2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetBufferMemoryRequirements2KHR ::
+               unwrapVkGetBufferMemoryRequirements2KHRUnsafe ::
                PFN_vkGetBufferMemoryRequirements2KHR ->
                  HS_vkGetBufferMemoryRequirements2KHR
 
@@ -197,9 +199,10 @@
         vkProcSymbol = _VkGetBufferMemoryRequirements2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetBufferMemoryRequirements2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -249,7 +252,7 @@
      FunPtr HS_vkGetImageSparseMemoryRequirements2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements2KHR ::
+               unwrapVkGetImageSparseMemoryRequirements2KHRUnsafe ::
                PFN_vkGetImageSparseMemoryRequirements2KHR ->
                  HS_vkGetImageSparseMemoryRequirements2KHR
 
@@ -264,9 +267,10 @@
         vkProcSymbol = _VkGetImageSparseMemoryRequirements2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetImageSparseMemoryRequirements2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetImageSparseMemoryRequirements2KHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @KHR@
         --
@@ -161,7 +162,7 @@
      FunPtr HS_vkGetPhysicalDeviceFeatures2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFeatures2KHR ::
+               unwrapVkGetPhysicalDeviceFeatures2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceFeatures2KHR ->
                  HS_vkGetPhysicalDeviceFeatures2KHR
 
@@ -176,9 +177,9 @@
         vkProcSymbol = _VkGetPhysicalDeviceFeatures2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures2KHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeatures2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -222,7 +223,7 @@
      FunPtr HS_vkGetPhysicalDeviceProperties2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceProperties2KHR ::
+               unwrapVkGetPhysicalDeviceProperties2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceProperties2KHR ->
                  HS_vkGetPhysicalDeviceProperties2KHR
 
@@ -237,9 +238,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceProperties2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -285,7 +287,7 @@
      FunPtr HS_vkGetPhysicalDeviceFormatProperties2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties2KHR ::
+               unwrapVkGetPhysicalDeviceFormatProperties2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceFormatProperties2KHR ->
                  HS_vkGetPhysicalDeviceFormatProperties2KHR
 
@@ -300,9 +302,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceFormatProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceFormatProperties2KHRSafe
 
@@ -356,7 +359,7 @@
      FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties2KHR ::
+               unwrapVkGetPhysicalDeviceImageFormatProperties2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ->
                  HS_vkGetPhysicalDeviceImageFormatProperties2KHR
 
@@ -372,10 +375,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceImageFormatProperties2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRSafe
 
@@ -424,7 +427,7 @@
      FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHR ::
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ->
                  HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
 
@@ -440,10 +443,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRSafe
 
@@ -488,7 +491,7 @@
      FunPtr HS_vkGetPhysicalDeviceMemoryProperties2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties2KHR ::
+               unwrapVkGetPhysicalDeviceMemoryProperties2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceMemoryProperties2KHR ->
                  HS_vkGetPhysicalDeviceMemoryProperties2KHR
 
@@ -503,9 +506,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceMemoryProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceMemoryProperties2KHRSafe
 
@@ -560,7 +564,7 @@
      FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHR ::
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ->
                  HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
@@ -578,10 +582,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -117,7 +118,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHR ::
+               unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ->
                  HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
 
@@ -133,9 +134,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilities2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRSafe
 
@@ -188,7 +190,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfaceFormats2KHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfaceFormats2KHR ::
+               unwrapVkGetPhysicalDeviceSurfaceFormats2KHRUnsafe ::
                PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ->
                  HS_vkGetPhysicalDeviceSurfaceFormats2KHR
 
@@ -203,9 +205,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfaceFormats2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceFormats2KHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Ian Elliott ianelliott@google.com@
+        -- contact: @Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
@@ -2,6 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -16,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @KHR@
         --
@@ -83,7 +84,8 @@
 
 type PFN_vkTrimCommandPoolKHR = FunPtr HS_vkTrimCommandPoolKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPoolKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkTrimCommandPoolKHRUnsafe ::
                PFN_vkTrimCommandPoolKHR -> HS_vkTrimCommandPoolKHR
 
 foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolKHRSafe
@@ -94,9 +96,9 @@
         vkProcSymbol = _VkTrimCommandPoolKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkTrimCommandPoolKHR
+        unwrapVkProcPtrUnsafe = unwrapVkTrimCommandPoolKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -15,7 +16,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @KHR@
         --
@@ -102,7 +103,7 @@
      FunPtr HS_vkGetDescriptorSetLayoutSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDescriptorSetLayoutSupportKHR ::
+               unwrapVkGetDescriptorSetLayoutSupportKHRUnsafe ::
                PFN_vkGetDescriptorSetLayoutSupportKHR ->
                  HS_vkGetDescriptorSetLayoutSupportKHR
 
@@ -117,9 +118,10 @@
         vkProcSymbol = _VkGetDescriptorSetLayoutSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDescriptorSetLayoutSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDescriptorSetLayoutSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall,Ian Elliott ianelliott@google.com@
+        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -38,12 +38,14 @@
         -- > #include "vk_platform.h"
         VkCreateMirSurfaceKHR, pattern VkCreateMirSurfaceKHR,
         HS_vkCreateMirSurfaceKHR, PFN_vkCreateMirSurfaceKHR,
-        vkCreateMirSurfaceKHR, vkCreateMirSurfaceKHRSafe,
+        vkCreateMirSurfaceKHR, vkCreateMirSurfaceKHRUnsafe,
+        vkCreateMirSurfaceKHRSafe,
         VkGetPhysicalDeviceMirPresentationSupportKHR,
         pattern VkGetPhysicalDeviceMirPresentationSupportKHR,
         HS_vkGetPhysicalDeviceMirPresentationSupportKHR,
         PFN_vkGetPhysicalDeviceMirPresentationSupportKHR,
         vkGetPhysicalDeviceMirPresentationSupportKHR,
+        vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceMirPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
@@ -119,12 +121,15 @@
 --
 -- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateMirSurfaceKHRUnsafe@ and @vkCreateMirSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateMirSurfaceKHR@ is an alias
+--           of @vkCreateMirSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateMirSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateMirSurfaceKHR"
-               vkCreateMirSurfaceKHR ::
+               vkCreateMirSurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkMirSurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -134,18 +139,18 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateMirSurfaceKHR ::
-                      VkInstance -- ^ instance
-                                 ->
-                        Ptr VkMirSurfaceCreateInfoKHR -- ^ pCreateInfo
-                                                      ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                        -> IO VkResult
-vkCreateMirSurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateMirSurfaceKHR)
+vkCreateMirSurfaceKHRUnsafe ::
+                            VkInstance -- ^ instance
+                                       ->
+                              Ptr VkMirSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                            ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                              -> IO VkResult
+vkCreateMirSurfaceKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateMirSurfaceKHR)
 
-{-# NOINLINE vkCreateMirSurfaceKHR #-}
+{-# NOINLINE vkCreateMirSurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -174,9 +179,12 @@
 --
 -- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateMirSurfaceKHRUnsafe@ and @vkCreateMirSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateMirSurfaceKHR@ is an alias
+--           of @vkCreateMirSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateMirSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateMirSurfaceKHR"
                vkCreateMirSurfaceKHRSafe ::
@@ -203,6 +211,53 @@
 {-# NOINLINE vkCreateMirSurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateMirSurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkMirSurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateMirSurfaceKHR <- vkGetInstanceProc @VkCreateMirSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
+--
+-- __Note:__ @vkCreateMirSurfaceKHRUnsafe@ and @vkCreateMirSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateMirSurfaceKHR@ is an alias
+--           of @vkCreateMirSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateMirSurfaceKHRSafe@.
+--
+vkCreateMirSurfaceKHR ::
+                      VkInstance -- ^ instance
+                                 ->
+                        Ptr VkMirSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                      ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                        -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateMirSurfaceKHR = vkCreateMirSurfaceKHRUnsafe
+#else
+vkCreateMirSurfaceKHR = vkCreateMirSurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateMirSurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -226,8 +281,9 @@
 
 type PFN_vkCreateMirSurfaceKHR = FunPtr HS_vkCreateMirSurfaceKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateMirSurfaceKHR
-               :: PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateMirSurfaceKHRUnsafe ::
+               PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
 
 foreign import ccall safe "dynamic" unwrapVkCreateMirSurfaceKHRSafe
                :: PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
@@ -237,9 +293,9 @@
         vkProcSymbol = _VkCreateMirSurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateMirSurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateMirSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateMirSurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -288,30 +344,33 @@
 --
 -- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMirPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceMirPresentationSupportKHR"
-               vkGetPhysicalDeviceMirPresentationSupportKHR ::
+               vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 -> Word32 -- ^ queueFamilyIndex
                                           -> Ptr MirConnection -- ^ connection
                                                                -> IO VkBool32
 
 #else
-vkGetPhysicalDeviceMirPresentationSupportKHR ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               Word32 -- ^ queueFamilyIndex
-                                                      -> Ptr MirConnection -- ^ connection
-                                                                           -> IO VkBool32
-vkGetPhysicalDeviceMirPresentationSupportKHR
+vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     Word32 -- ^ queueFamilyIndex
+                                                            -> Ptr MirConnection -- ^ connection
+                                                                                 -> IO VkBool32
+vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceMirPresentationSupportKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceMirPresentationSupportKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe #-}
 #endif
 
 -- |
@@ -335,9 +394,12 @@
 --
 -- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMirPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceMirPresentationSupportKHR"
@@ -361,6 +423,48 @@
 {-# NOINLINE vkGetPhysicalDeviceMirPresentationSupportKHRSafe #-}
 #endif
 
+-- |
+-- > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t queueFamilyIndex
+-- >     , MirConnection* connection
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceMirPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMirPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@.
+--
+vkGetPhysicalDeviceMirPresentationSupportKHR ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               Word32 -- ^ queueFamilyIndex
+                                                      -> Ptr MirConnection -- ^ connection
+                                                                           -> IO VkBool32
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceMirPresentationSupportKHR
+  = vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe
+#else
+vkGetPhysicalDeviceMirPresentationSupportKHR
+  = vkGetPhysicalDeviceMirPresentationSupportKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceMirPresentationSupportKHR #-}
+
 -- | > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -378,7 +482,7 @@
      FunPtr HS_vkGetPhysicalDeviceMirPresentationSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMirPresentationSupportKHR ::
+               unwrapVkGetPhysicalDeviceMirPresentationSupportKHRUnsafe ::
                PFN_vkGetPhysicalDeviceMirPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceMirPresentationSupportKHR
 
@@ -394,10 +498,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceMirPresentationSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceMirPresentationSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
@@ -11,7 +11,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @KHR@
         --
@@ -118,7 +119,7 @@
      FunPtr HS_vkCmdPushDescriptorSetKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdPushDescriptorSetKHR ::
+               unwrapVkCmdPushDescriptorSetKHRUnsafe ::
                PFN_vkCmdPushDescriptorSetKHR -> HS_vkCmdPushDescriptorSetKHR
 
 foreign import ccall safe "dynamic"
@@ -131,9 +132,9 @@
         vkProcSymbol = _VkCmdPushDescriptorSetKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdPushDescriptorSetKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCmdPushDescriptorSetKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdPushDescriptorSetKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -230,7 +231,7 @@
      FunPtr HS_vkCmdPushDescriptorSetWithTemplateKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdPushDescriptorSetWithTemplateKHR ::
+               unwrapVkCmdPushDescriptorSetWithTemplateKHRUnsafe ::
                PFN_vkCmdPushDescriptorSetWithTemplateKHR ->
                  HS_vkCmdPushDescriptorSetWithTemplateKHR
 
@@ -245,9 +246,10 @@
         vkProcSymbol = _VkCmdPushDescriptorSetWithTemplateKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdPushDescriptorSetWithTemplateKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCmdPushDescriptorSetWithTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkCmdPushDescriptorSetWithTemplateKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @John Kessenich @johnk@
+        -- contact: @John Kessenich @johnkslang@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Tobias Hector @tobias@
+        -- contact: @Tobias Hector @tobski@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -248,7 +249,7 @@
      FunPtr HS_vkCreateSamplerYcbcrConversionKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateSamplerYcbcrConversionKHR ::
+               unwrapVkCreateSamplerYcbcrConversionKHRUnsafe ::
                PFN_vkCreateSamplerYcbcrConversionKHR ->
                  HS_vkCreateSamplerYcbcrConversionKHR
 
@@ -263,9 +264,10 @@
         vkProcSymbol = _VkCreateSamplerYcbcrConversionKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSamplerYcbcrConversionKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCreateSamplerYcbcrConversionKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -312,7 +314,7 @@
      FunPtr HS_vkDestroySamplerYcbcrConversionKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDestroySamplerYcbcrConversionKHR ::
+               unwrapVkDestroySamplerYcbcrConversionKHRUnsafe ::
                PFN_vkDestroySamplerYcbcrConversionKHR ->
                  HS_vkDestroySamplerYcbcrConversionKHR
 
@@ -327,9 +329,10 @@
         vkProcSymbol = _VkDestroySamplerYcbcrConversionKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySamplerYcbcrConversionKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkDestroySamplerYcbcrConversionKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -103,8 +104,9 @@
 type PFN_vkGetSwapchainStatusKHR =
      FunPtr HS_vkGetSwapchainStatusKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkGetSwapchainStatusKHR
-               :: PFN_vkGetSwapchainStatusKHR -> HS_vkGetSwapchainStatusKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetSwapchainStatusKHRUnsafe ::
+               PFN_vkGetSwapchainStatusKHR -> HS_vkGetSwapchainStatusKHR
 
 foreign import ccall safe "dynamic"
                unwrapVkGetSwapchainStatusKHRSafe ::
@@ -116,9 +118,9 @@
         vkProcSymbol = _VkGetSwapchainStatusKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetSwapchainStatusKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainStatusKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetSwapchainStatusKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Alexander Galazin @debater@
+        -- contact: @Alexander Galazin @alegal-arm@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
@@ -18,7 +18,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @James Jones @cubanismo,Ian Elliott ianelliott@google.com@
+        -- contact: @James Jones @cubanismo,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -27,30 +27,34 @@
         -- Extension number: @1@
         VkDestroySurfaceKHR, pattern VkDestroySurfaceKHR,
         HS_vkDestroySurfaceKHR, PFN_vkDestroySurfaceKHR,
-        vkDestroySurfaceKHR, vkDestroySurfaceKHRSafe,
-        VkGetPhysicalDeviceSurfaceSupportKHR,
+        vkDestroySurfaceKHR, vkDestroySurfaceKHRUnsafe,
+        vkDestroySurfaceKHRSafe, VkGetPhysicalDeviceSurfaceSupportKHR,
         pattern VkGetPhysicalDeviceSurfaceSupportKHR,
         HS_vkGetPhysicalDeviceSurfaceSupportKHR,
         PFN_vkGetPhysicalDeviceSurfaceSupportKHR,
         vkGetPhysicalDeviceSurfaceSupportKHR,
+        vkGetPhysicalDeviceSurfaceSupportKHRUnsafe,
         vkGetPhysicalDeviceSurfaceSupportKHRSafe,
         VkGetPhysicalDeviceSurfaceCapabilitiesKHR,
         pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR,
         HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
         PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
         vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
+        vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe,
         vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe,
         VkGetPhysicalDeviceSurfaceFormatsKHR,
         pattern VkGetPhysicalDeviceSurfaceFormatsKHR,
         HS_vkGetPhysicalDeviceSurfaceFormatsKHR,
         PFN_vkGetPhysicalDeviceSurfaceFormatsKHR,
         vkGetPhysicalDeviceSurfaceFormatsKHR,
+        vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe,
         vkGetPhysicalDeviceSurfaceFormatsKHRSafe,
         VkGetPhysicalDeviceSurfacePresentModesKHR,
         pattern VkGetPhysicalDeviceSurfacePresentModesKHR,
         HS_vkGetPhysicalDeviceSurfacePresentModesKHR,
         PFN_vkGetPhysicalDeviceSurfacePresentModesKHR,
         vkGetPhysicalDeviceSurfacePresentModesKHR,
+        vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe,
         vkGetPhysicalDeviceSurfacePresentModesKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
@@ -135,27 +139,30 @@
 --
 -- > myDestroySurfaceKHR <- vkGetProc @VkDestroySurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkDestroySurfaceKHRUnsafe@ and @vkDestroySurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySurfaceKHR@ is an alias
+--           of @vkDestroySurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkDestroySurfaceKHR"
-               vkDestroySurfaceKHR ::
+               vkDestroySurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           -> VkSurfaceKHR -- ^ surface
                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                        -> IO ()
 
 #else
-vkDestroySurfaceKHR ::
-                    VkInstance -- ^ instance
-                               -> VkSurfaceKHR -- ^ surface
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroySurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkDestroySurfaceKHR)
+vkDestroySurfaceKHRUnsafe ::
+                          VkInstance -- ^ instance
+                                     -> VkSurfaceKHR -- ^ surface
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroySurfaceKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySurfaceKHR)
 
-{-# NOINLINE vkDestroySurfaceKHR #-}
+{-# NOINLINE vkDestroySurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -179,9 +186,12 @@
 --
 -- > myDestroySurfaceKHR <- vkGetProc @VkDestroySurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkDestroySurfaceKHRUnsafe@ and @vkDestroySurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySurfaceKHR@ is an alias
+--           of @vkDestroySurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkDestroySurfaceKHR"
                vkDestroySurfaceKHRSafe ::
@@ -202,6 +212,45 @@
 {-# NOINLINE vkDestroySurfaceKHRSafe #-}
 #endif
 
+-- |
+-- > void vkDestroySurfaceKHR
+-- >     ( VkInstance instance
+-- >     , VkSurfaceKHR surface
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySurfaceKHR vkDestroySurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySurfaceKHR <- vkGetInstanceProc @VkDestroySurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroySurfaceKHR <- vkGetProc @VkDestroySurfaceKHR
+--
+-- __Note:__ @vkDestroySurfaceKHRUnsafe@ and @vkDestroySurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySurfaceKHR@ is an alias
+--           of @vkDestroySurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySurfaceKHRSafe@.
+--
+vkDestroySurfaceKHR ::
+                    VkInstance -- ^ instance
+                               -> VkSurfaceKHR -- ^ surface
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkDestroySurfaceKHR = vkDestroySurfaceKHRUnsafe
+#else
+vkDestroySurfaceKHR = vkDestroySurfaceKHRSafe
+
+#endif
+{-# INLINE vkDestroySurfaceKHR #-}
+
 -- | > void vkDestroySurfaceKHR
 --   >     ( VkInstance instance
 --   >     , VkSurfaceKHR surface
@@ -217,7 +266,8 @@
 
 type PFN_vkDestroySurfaceKHR = FunPtr HS_vkDestroySurfaceKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkDestroySurfaceKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySurfaceKHRUnsafe ::
                PFN_vkDestroySurfaceKHR -> HS_vkDestroySurfaceKHR
 
 foreign import ccall safe "dynamic" unwrapVkDestroySurfaceKHRSafe
@@ -228,9 +278,9 @@
         vkProcSymbol = _VkDestroySurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkDestroySurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroySurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -283,12 +333,15 @@
 --
 -- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfaceSupportKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceSupportKHR"
-               vkGetPhysicalDeviceSurfaceSupportKHR ::
+               vkGetPhysicalDeviceSurfaceSupportKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Word32 -- ^ queueFamilyIndex
@@ -297,18 +350,18 @@
                                                         -> IO VkResult
 
 #else
-vkGetPhysicalDeviceSurfaceSupportKHR ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Word32 -- ^ queueFamilyIndex
-                                              -> VkSurfaceKHR -- ^ surface
-                                                              -> Ptr VkBool32 -- ^ pSupported
-                                                                              -> IO VkResult
-vkGetPhysicalDeviceSurfaceSupportKHR
+vkGetPhysicalDeviceSurfaceSupportKHRUnsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             Word32 -- ^ queueFamilyIndex
+                                                    -> VkSurfaceKHR -- ^ surface
+                                                                    -> Ptr VkBool32 -- ^ pSupported
+                                                                                    -> IO VkResult
+vkGetPhysicalDeviceSurfaceSupportKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSurfaceSupportKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHRUnsafe #-}
 #endif
 
 -- |
@@ -337,9 +390,12 @@
 --
 -- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfaceSupportKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetPhysicalDeviceSurfaceSupportKHR"
                vkGetPhysicalDeviceSurfaceSupportKHRSafe ::
@@ -365,6 +421,54 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkGetPhysicalDeviceSurfaceSupportKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t queueFamilyIndex
+-- >     , VkSurfaceKHR surface
+-- >     , VkBool32* pSupported
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceSurfaceSupportKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceSupportKHRSafe@.
+--
+vkGetPhysicalDeviceSurfaceSupportKHR ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Word32 -- ^ queueFamilyIndex
+                                              -> VkSurfaceKHR -- ^ surface
+                                                              -> Ptr VkBool32 -- ^ pSupported
+                                                                              -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSurfaceSupportKHR
+  = vkGetPhysicalDeviceSurfaceSupportKHRUnsafe
+#else
+vkGetPhysicalDeviceSurfaceSupportKHR
+  = vkGetPhysicalDeviceSurfaceSupportKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceSurfaceSupportKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -389,7 +493,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfaceSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfaceSupportKHR ::
+               unwrapVkGetPhysicalDeviceSurfaceSupportKHRUnsafe ::
                PFN_vkGetPhysicalDeviceSurfaceSupportKHR ->
                  HS_vkGetPhysicalDeviceSurfaceSupportKHR
 
@@ -404,9 +508,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfaceSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfaceSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe
 
@@ -459,13 +564,16 @@
 --
 -- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
-               vkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
+               vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkSurfaceKHR -- ^ surface
@@ -473,18 +581,18 @@
                                                               -> IO VkResult
 
 #else
-vkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            VkSurfaceKHR -- ^ surface
-                                                         ->
-                                              Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
-                                                                           -> IO VkResult
-vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  VkSurfaceKHR -- ^ surface
+                                                               ->
+                                                    Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
+                                                                                 -> IO VkResult
+vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe #-}
 #endif
 
 -- |
@@ -512,9 +620,12 @@
 --
 -- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
@@ -540,6 +651,53 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkSurfaceKHR surface
+-- >     , VkSurfaceCapabilitiesKHR* pSurfaceCapabilities
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@.
+--
+vkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            VkSurfaceKHR -- ^ surface
+                                                         ->
+                                              Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
+                                                                           -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+  = vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe
+#else
+vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+  = vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -562,7 +720,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
+               unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ->
                  HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
@@ -578,9 +736,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
 
@@ -634,12 +793,15 @@
 --
 -- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceFormatsKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceFormatsKHR"
-               vkGetPhysicalDeviceSurfaceFormatsKHR ::
+               vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkSurfaceKHR -- ^ surface
@@ -648,19 +810,19 @@
                                                                       -> IO VkResult
 
 #else
-vkGetPhysicalDeviceSurfaceFormatsKHR ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       VkSurfaceKHR -- ^ surface
-                                                    ->
-                                         Ptr Word32 -- ^ pSurfaceFormatCount
-                                                    -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
-                                                                              -> IO VkResult
-vkGetPhysicalDeviceSurfaceFormatsKHR
+vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             VkSurfaceKHR -- ^ surface
+                                                          ->
+                                               Ptr Word32 -- ^ pSurfaceFormatCount
+                                                          -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
+                                                                                    -> IO VkResult
+vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSurfaceFormatsKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe #-}
 #endif
 
 -- |
@@ -689,9 +851,12 @@
 --
 -- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceFormatsKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetPhysicalDeviceSurfaceFormatsKHR"
                vkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
@@ -718,6 +883,55 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkGetPhysicalDeviceSurfaceFormatsKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkSurfaceKHR surface
+-- >     , uint32_t* pSurfaceFormatCount
+-- >     , VkSurfaceFormatKHR* pSurfaceFormats
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceFormatsKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe@ and @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfaceFormatsKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@.
+--
+vkGetPhysicalDeviceSurfaceFormatsKHR ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       VkSurfaceKHR -- ^ surface
+                                                    ->
+                                         Ptr Word32 -- ^ pSurfaceFormatCount
+                                                    -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
+                                                                              -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSurfaceFormatsKHR
+  = vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe
+#else
+vkGetPhysicalDeviceSurfaceFormatsKHR
+  = vkGetPhysicalDeviceSurfaceFormatsKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceSurfaceFormatsKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -742,7 +956,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfaceFormatsKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfaceFormatsKHR ::
+               unwrapVkGetPhysicalDeviceSurfaceFormatsKHRUnsafe ::
                PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ->
                  HS_vkGetPhysicalDeviceSurfaceFormatsKHR
 
@@ -757,9 +971,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfaceFormatsKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceFormatsKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe
 
@@ -813,13 +1028,16 @@
 --
 -- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe@ and @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfacePresentModesKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfacePresentModesKHR"
-               vkGetPhysicalDeviceSurfacePresentModesKHR ::
+               vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkSurfaceKHR -- ^ surface
@@ -828,19 +1046,20 @@
                                                                     -> IO VkResult
 
 #else
-vkGetPhysicalDeviceSurfacePresentModesKHR ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            VkSurfaceKHR -- ^ surface
-                                                         ->
-                                              Ptr Word32 -- ^ pPresentModeCount
-                                                         -> Ptr VkPresentModeKHR -- ^ pPresentModes
-                                                                                 -> IO VkResult
-vkGetPhysicalDeviceSurfacePresentModesKHR
+vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  VkSurfaceKHR -- ^ surface
+                                                               ->
+                                                    Ptr Word32 -- ^ pPresentModeCount
+                                                               ->
+                                                      Ptr VkPresentModeKHR -- ^ pPresentModes
+                                                                           -> IO VkResult
+vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSurfacePresentModesKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe #-}
 #endif
 
 -- |
@@ -869,9 +1088,12 @@
 --
 -- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe@ and @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfacePresentModesKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceSurfacePresentModesKHR"
@@ -899,6 +1121,55 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkGetPhysicalDeviceSurfacePresentModesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkSurfaceKHR surface
+-- >     , uint32_t* pPresentModeCount
+-- >     , VkPresentModeKHR* pPresentModes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfacePresentModesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe@ and @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSurfacePresentModesKHR@ is an alias
+--           of @vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@.
+--
+vkGetPhysicalDeviceSurfacePresentModesKHR ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            VkSurfaceKHR -- ^ surface
+                                                         ->
+                                              Ptr Word32 -- ^ pPresentModeCount
+                                                         -> Ptr VkPresentModeKHR -- ^ pPresentModes
+                                                                                 -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSurfacePresentModesKHR
+  = vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe
+#else
+vkGetPhysicalDeviceSurfacePresentModesKHR
+  = vkGetPhysicalDeviceSurfacePresentModesKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceSurfacePresentModesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -923,7 +1194,7 @@
      FunPtr HS_vkGetPhysicalDeviceSurfacePresentModesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSurfacePresentModesKHR ::
+               unwrapVkGetPhysicalDeviceSurfacePresentModesKHRUnsafe ::
                PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ->
                  HS_vkGetPhysicalDeviceSurfacePresentModesKHR
 
@@ -939,9 +1210,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceSurfacePresentModesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfacePresentModesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @James Jones @cubanismo,Ian Elliott ianelliott@google.com@
+        -- contact: @James Jones @cubanismo,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -31,19 +31,21 @@
         -- ** Required extensions: 'VK_KHR_surface'.
         VkCreateSwapchainKHR, pattern VkCreateSwapchainKHR,
         HS_vkCreateSwapchainKHR, PFN_vkCreateSwapchainKHR,
-        vkCreateSwapchainKHR, vkCreateSwapchainKHRSafe,
-        VkDestroySwapchainKHR, pattern VkDestroySwapchainKHR,
-        HS_vkDestroySwapchainKHR, PFN_vkDestroySwapchainKHR,
-        vkDestroySwapchainKHR, vkDestroySwapchainKHRSafe,
+        vkCreateSwapchainKHR, vkCreateSwapchainKHRUnsafe,
+        vkCreateSwapchainKHRSafe, VkDestroySwapchainKHR,
+        pattern VkDestroySwapchainKHR, HS_vkDestroySwapchainKHR,
+        PFN_vkDestroySwapchainKHR, vkDestroySwapchainKHR,
+        vkDestroySwapchainKHRUnsafe, vkDestroySwapchainKHRSafe,
         VkGetSwapchainImagesKHR, pattern VkGetSwapchainImagesKHR,
         HS_vkGetSwapchainImagesKHR, PFN_vkGetSwapchainImagesKHR,
-        vkGetSwapchainImagesKHR, vkGetSwapchainImagesKHRSafe,
-        VkAcquireNextImageKHR, pattern VkAcquireNextImageKHR,
-        HS_vkAcquireNextImageKHR, PFN_vkAcquireNextImageKHR,
-        vkAcquireNextImageKHR, vkAcquireNextImageKHRSafe,
+        vkGetSwapchainImagesKHR, vkGetSwapchainImagesKHRUnsafe,
+        vkGetSwapchainImagesKHRSafe, VkAcquireNextImageKHR,
+        pattern VkAcquireNextImageKHR, HS_vkAcquireNextImageKHR,
+        PFN_vkAcquireNextImageKHR, vkAcquireNextImageKHR,
+        vkAcquireNextImageKHRUnsafe, vkAcquireNextImageKHRSafe,
         VkQueuePresentKHR, pattern VkQueuePresentKHR, HS_vkQueuePresentKHR,
-        PFN_vkQueuePresentKHR, vkQueuePresentKHR, vkQueuePresentKHRSafe,
-        module Graphics.Vulkan.Marshal,
+        PFN_vkQueuePresentKHR, vkQueuePresentKHR, vkQueuePresentKHRUnsafe,
+        vkQueuePresentKHRSafe, module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Enum.Color,
         module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
@@ -85,22 +87,26 @@
         HS_vkGetDeviceGroupPresentCapabilitiesKHR,
         PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
         vkGetDeviceGroupPresentCapabilitiesKHR,
+        vkGetDeviceGroupPresentCapabilitiesKHRUnsafe,
         vkGetDeviceGroupPresentCapabilitiesKHRSafe,
         VkGetDeviceGroupSurfacePresentModesKHR,
         pattern VkGetDeviceGroupSurfacePresentModesKHR,
         HS_vkGetDeviceGroupSurfacePresentModesKHR,
         PFN_vkGetDeviceGroupSurfacePresentModesKHR,
         vkGetDeviceGroupSurfacePresentModesKHR,
+        vkGetDeviceGroupSurfacePresentModesKHRUnsafe,
         vkGetDeviceGroupSurfacePresentModesKHRSafe,
         VkGetPhysicalDevicePresentRectanglesKHR,
         pattern VkGetPhysicalDevicePresentRectanglesKHR,
         HS_vkGetPhysicalDevicePresentRectanglesKHR,
         PFN_vkGetPhysicalDevicePresentRectanglesKHR,
         vkGetPhysicalDevicePresentRectanglesKHR,
+        vkGetPhysicalDevicePresentRectanglesKHRUnsafe,
         vkGetPhysicalDevicePresentRectanglesKHRSafe,
         VkAcquireNextImage2KHR, pattern VkAcquireNextImage2KHR,
         HS_vkAcquireNextImage2KHR, PFN_vkAcquireNextImage2KHR,
-        vkAcquireNextImage2KHR, vkAcquireNextImage2KHRSafe,
+        vkAcquireNextImage2KHR, vkAcquireNextImage2KHRUnsafe,
+        vkAcquireNextImage2KHRSafe,
         module Graphics.Vulkan.Types.Struct.Offset,
         module Graphics.Vulkan.Types.Struct.Rect,
         pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
@@ -189,12 +195,15 @@
 --
 -- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateSwapchainKHRUnsafe@ and @vkCreateSwapchainKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSwapchainKHR@ is an alias
+--           of @vkCreateSwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSwapchainKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateSwapchainKHR"
-               vkCreateSwapchainKHR ::
+               vkCreateSwapchainKHRUnsafe ::
                VkDevice -- ^ device
                         ->
                  Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
@@ -204,18 +213,18 @@
                                                                    -> IO VkResult
 
 #else
-vkCreateSwapchainKHR ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
-                                                    ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkSwapchainKHR -- ^ pSwapchain
-                                                                         -> IO VkResult
-vkCreateSwapchainKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateSwapchainKHR)
+vkCreateSwapchainKHRUnsafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
+                                                          ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkSwapchainKHR -- ^ pSwapchain
+                                                                               -> IO VkResult
+vkCreateSwapchainKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSwapchainKHR)
 
-{-# NOINLINE vkCreateSwapchainKHR #-}
+{-# NOINLINE vkCreateSwapchainKHRUnsafe #-}
 #endif
 
 -- |
@@ -244,9 +253,12 @@
 --
 -- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateSwapchainKHRUnsafe@ and @vkCreateSwapchainKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSwapchainKHR@ is an alias
+--           of @vkCreateSwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSwapchainKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateSwapchainKHR"
                vkCreateSwapchainKHRSafe ::
@@ -273,6 +285,53 @@
 {-# NOINLINE vkCreateSwapchainKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+-- > VkResult vkCreateSwapchainKHR
+-- >     ( VkDevice device
+-- >     , const VkSwapchainCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSwapchainKHR* pSwapchain
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
+--
+-- __Note:__ @vkCreateSwapchainKHRUnsafe@ and @vkCreateSwapchainKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSwapchainKHR@ is an alias
+--           of @vkCreateSwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSwapchainKHRSafe@.
+--
+vkCreateSwapchainKHR ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
+                                                    ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkSwapchainKHR -- ^ pSwapchain
+                                                                         -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateSwapchainKHR = vkCreateSwapchainKHRUnsafe
+#else
+vkCreateSwapchainKHR = vkCreateSwapchainKHRSafe
+
+#endif
+{-# INLINE vkCreateSwapchainKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
@@ -296,7 +355,8 @@
 
 type PFN_vkCreateSwapchainKHR = FunPtr HS_vkCreateSwapchainKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateSwapchainKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateSwapchainKHRUnsafe ::
                PFN_vkCreateSwapchainKHR -> HS_vkCreateSwapchainKHR
 
 foreign import ccall safe "dynamic" unwrapVkCreateSwapchainKHRSafe
@@ -307,9 +367,9 @@
         vkProcSymbol = _VkCreateSwapchainKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSwapchainKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateSwapchainKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateSwapchainKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -353,27 +413,30 @@
 --
 -- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkDestroySwapchainKHRUnsafe@ and @vkDestroySwapchainKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySwapchainKHR@ is an alias
+--           of @vkDestroySwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySwapchainKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkDestroySwapchainKHR"
-               vkDestroySwapchainKHR ::
+               vkDestroySwapchainKHRUnsafe ::
                VkDevice -- ^ device
                         -> VkSwapchainKHR -- ^ swapchain
                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                        -> IO ()
 
 #else
-vkDestroySwapchainKHR ::
-                      VkDevice -- ^ device
-                               -> VkSwapchainKHR -- ^ swapchain
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroySwapchainKHR
-  = unsafeDupablePerformIO (vkGetProc @VkDestroySwapchainKHR)
+vkDestroySwapchainKHRUnsafe ::
+                            VkDevice -- ^ device
+                                     -> VkSwapchainKHR -- ^ swapchain
+                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                    -> IO ()
+vkDestroySwapchainKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySwapchainKHR)
 
-{-# NOINLINE vkDestroySwapchainKHR #-}
+{-# NOINLINE vkDestroySwapchainKHRUnsafe #-}
 #endif
 
 -- |
@@ -397,9 +460,12 @@
 --
 -- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkDestroySwapchainKHRUnsafe@ and @vkDestroySwapchainKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySwapchainKHR@ is an alias
+--           of @vkDestroySwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySwapchainKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkDestroySwapchainKHR"
                vkDestroySwapchainKHRSafe ::
@@ -420,6 +486,45 @@
 {-# NOINLINE vkDestroySwapchainKHRSafe #-}
 #endif
 
+-- |
+-- > void vkDestroySwapchainKHR
+-- >     ( VkDevice device
+-- >     , VkSwapchainKHR swapchain
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySwapchainKHR <- vkGetDeviceProc @VkDestroySwapchainKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
+--
+-- __Note:__ @vkDestroySwapchainKHRUnsafe@ and @vkDestroySwapchainKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySwapchainKHR@ is an alias
+--           of @vkDestroySwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySwapchainKHRSafe@.
+--
+vkDestroySwapchainKHR ::
+                      VkDevice -- ^ device
+                               -> VkSwapchainKHR -- ^ swapchain
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkDestroySwapchainKHR = vkDestroySwapchainKHRUnsafe
+#else
+vkDestroySwapchainKHR = vkDestroySwapchainKHRSafe
+
+#endif
+{-# INLINE vkDestroySwapchainKHR #-}
+
 -- | > void vkDestroySwapchainKHR
 --   >     ( VkDevice device
 --   >     , VkSwapchainKHR swapchain
@@ -435,8 +540,9 @@
 
 type PFN_vkDestroySwapchainKHR = FunPtr HS_vkDestroySwapchainKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkDestroySwapchainKHR
-               :: PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySwapchainKHRUnsafe ::
+               PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
 
 foreign import ccall safe "dynamic" unwrapVkDestroySwapchainKHRSafe
                :: PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
@@ -446,9 +552,9 @@
         vkProcSymbol = _VkDestroySwapchainKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySwapchainKHR
+        unwrapVkProcPtrUnsafe = unwrapVkDestroySwapchainKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroySwapchainKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -498,12 +604,15 @@
 --
 -- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetSwapchainImagesKHRUnsafe@ and @vkGetSwapchainImagesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetSwapchainImagesKHR@ is an alias
+--           of @vkGetSwapchainImagesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetSwapchainImagesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetSwapchainImagesKHR"
-               vkGetSwapchainImagesKHR ::
+               vkGetSwapchainImagesKHRUnsafe ::
                VkDevice -- ^ device
                         ->
                  VkSwapchainKHR -- ^ swapchain
@@ -512,17 +621,17 @@
                                                              -> IO VkResult
 
 #else
-vkGetSwapchainImagesKHR ::
-                        VkDevice -- ^ device
-                                 ->
-                          VkSwapchainKHR -- ^ swapchain
-                                         -> Ptr Word32 -- ^ pSwapchainImageCount
-                                                       -> Ptr VkImage -- ^ pSwapchainImages
-                                                                      -> IO VkResult
-vkGetSwapchainImagesKHR
-  = unsafeDupablePerformIO (vkGetProc @VkGetSwapchainImagesKHR)
+vkGetSwapchainImagesKHRUnsafe ::
+                              VkDevice -- ^ device
+                                       ->
+                                VkSwapchainKHR -- ^ swapchain
+                                               -> Ptr Word32 -- ^ pSwapchainImageCount
+                                                             -> Ptr VkImage -- ^ pSwapchainImages
+                                                                            -> IO VkResult
+vkGetSwapchainImagesKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetSwapchainImagesKHR)
 
-{-# NOINLINE vkGetSwapchainImagesKHR #-}
+{-# NOINLINE vkGetSwapchainImagesKHRUnsafe #-}
 #endif
 
 -- |
@@ -551,9 +660,12 @@
 --
 -- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetSwapchainImagesKHRUnsafe@ and @vkGetSwapchainImagesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetSwapchainImagesKHR@ is an alias
+--           of @vkGetSwapchainImagesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetSwapchainImagesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetSwapchainImagesKHR"
                vkGetSwapchainImagesKHRSafe ::
@@ -578,6 +690,52 @@
 {-# NOINLINE vkGetSwapchainImagesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetSwapchainImagesKHR
+-- >     ( VkDevice device
+-- >     , VkSwapchainKHR swapchain
+-- >     , uint32_t* pSwapchainImageCount
+-- >     , VkImage* pSwapchainImages
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
+--
+-- __Note:__ @vkGetSwapchainImagesKHRUnsafe@ and @vkGetSwapchainImagesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetSwapchainImagesKHR@ is an alias
+--           of @vkGetSwapchainImagesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetSwapchainImagesKHRSafe@.
+--
+vkGetSwapchainImagesKHR ::
+                        VkDevice -- ^ device
+                                 ->
+                          VkSwapchainKHR -- ^ swapchain
+                                         -> Ptr Word32 -- ^ pSwapchainImageCount
+                                                       -> Ptr VkImage -- ^ pSwapchainImages
+                                                                      -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetSwapchainImagesKHR = vkGetSwapchainImagesKHRUnsafe
+#else
+vkGetSwapchainImagesKHR = vkGetSwapchainImagesKHRSafe
+
+#endif
+{-# INLINE vkGetSwapchainImagesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -601,8 +759,9 @@
 type PFN_vkGetSwapchainImagesKHR =
      FunPtr HS_vkGetSwapchainImagesKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkGetSwapchainImagesKHR
-               :: PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetSwapchainImagesKHRUnsafe ::
+               PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR
 
 foreign import ccall safe "dynamic"
                unwrapVkGetSwapchainImagesKHRSafe ::
@@ -614,9 +773,9 @@
         vkProcSymbol = _VkGetSwapchainImagesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetSwapchainImagesKHR
+        unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainImagesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetSwapchainImagesKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -667,12 +826,15 @@
 --
 -- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkAcquireNextImageKHRUnsafe@ and @vkAcquireNextImageKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAcquireNextImageKHR@ is an alias
+--           of @vkAcquireNextImageKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAcquireNextImageKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkAcquireNextImageKHR"
-               vkAcquireNextImageKHR ::
+               vkAcquireNextImageKHRUnsafe ::
                VkDevice -- ^ device
                         ->
                  VkSwapchainKHR -- ^ swapchain
@@ -684,20 +846,20 @@
                                                                   -> IO VkResult
 
 #else
-vkAcquireNextImageKHR ::
-                      VkDevice -- ^ device
-                               ->
-                        VkSwapchainKHR -- ^ swapchain
-                                       ->
-                          Word64 -- ^ timeout
-                                 -> VkSemaphore -- ^ semaphore
-                                                -> VkFence -- ^ fence
-                                                           -> Ptr Word32 -- ^ pImageIndex
-                                                                         -> IO VkResult
-vkAcquireNextImageKHR
-  = unsafeDupablePerformIO (vkGetProc @VkAcquireNextImageKHR)
+vkAcquireNextImageKHRUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkSwapchainKHR -- ^ swapchain
+                                             ->
+                                Word64 -- ^ timeout
+                                       -> VkSemaphore -- ^ semaphore
+                                                      -> VkFence -- ^ fence
+                                                                 -> Ptr Word32 -- ^ pImageIndex
+                                                                               -> IO VkResult
+vkAcquireNextImageKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkAcquireNextImageKHR)
 
-{-# NOINLINE vkAcquireNextImageKHR #-}
+{-# NOINLINE vkAcquireNextImageKHRUnsafe #-}
 #endif
 
 -- |
@@ -728,9 +890,12 @@
 --
 -- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkAcquireNextImageKHRUnsafe@ and @vkAcquireNextImageKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAcquireNextImageKHR@ is an alias
+--           of @vkAcquireNextImageKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAcquireNextImageKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkAcquireNextImageKHR"
                vkAcquireNextImageKHRSafe ::
@@ -761,6 +926,57 @@
 {-# NOINLINE vkAcquireNextImageKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkAcquireNextImageKHR
+-- >     ( VkDevice device
+-- >     , VkSwapchainKHR swapchain
+-- >     , uint64_t timeout
+-- >     , VkSemaphore semaphore
+-- >     , VkFence fence
+-- >     , uint32_t* pImageIndex
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
+--
+-- __Note:__ @vkAcquireNextImageKHRUnsafe@ and @vkAcquireNextImageKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAcquireNextImageKHR@ is an alias
+--           of @vkAcquireNextImageKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAcquireNextImageKHRSafe@.
+--
+vkAcquireNextImageKHR ::
+                      VkDevice -- ^ device
+                               ->
+                        VkSwapchainKHR -- ^ swapchain
+                                       ->
+                          Word64 -- ^ timeout
+                                 -> VkSemaphore -- ^ semaphore
+                                                -> VkFence -- ^ fence
+                                                           -> Ptr Word32 -- ^ pImageIndex
+                                                                         -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkAcquireNextImageKHR = vkAcquireNextImageKHRUnsafe
+#else
+vkAcquireNextImageKHR = vkAcquireNextImageKHRSafe
+
+#endif
+{-# INLINE vkAcquireNextImageKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -788,8 +1004,9 @@
 
 type PFN_vkAcquireNextImageKHR = FunPtr HS_vkAcquireNextImageKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkAcquireNextImageKHR
-               :: PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkAcquireNextImageKHRUnsafe ::
+               PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
 
 foreign import ccall safe "dynamic" unwrapVkAcquireNextImageKHRSafe
                :: PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
@@ -799,9 +1016,9 @@
         vkProcSymbol = _VkAcquireNextImageKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAcquireNextImageKHR
+        unwrapVkProcPtrUnsafe = unwrapVkAcquireNextImageKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkAcquireNextImageKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -847,23 +1064,28 @@
 --
 -- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkQueuePresentKHRUnsafe@ and @vkQueuePresentKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueuePresentKHR@ is an alias
+--           of @vkQueuePresentKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueuePresentKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueuePresentKHR" vkQueuePresentKHR
-               :: VkQueue -- ^ queue
-                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
-                                                  -> IO VkResult
+foreign import ccall unsafe "vkQueuePresentKHR"
+               vkQueuePresentKHRUnsafe ::
+               VkQueue -- ^ queue
+                       -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
+                                               -> IO VkResult
 
 #else
-vkQueuePresentKHR :: VkQueue -- ^ queue
-                             -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
-                                                     -> IO VkResult
-vkQueuePresentKHR
-  = unsafeDupablePerformIO (vkGetProc @VkQueuePresentKHR)
+vkQueuePresentKHRUnsafe ::
+                        VkQueue -- ^ queue
+                                -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
+                                                        -> IO VkResult
+vkQueuePresentKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueuePresentKHR)
 
-{-# NOINLINE vkQueuePresentKHR #-}
+{-# NOINLINE vkQueuePresentKHRUnsafe #-}
 #endif
 
 -- |
@@ -890,9 +1112,12 @@
 --
 -- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkQueuePresentKHRUnsafe@ and @vkQueuePresentKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueuePresentKHR@ is an alias
+--           of @vkQueuePresentKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueuePresentKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkQueuePresentKHR" vkQueuePresentKHRSafe
                :: VkQueue -- ^ queue
@@ -910,6 +1135,46 @@
 {-# NOINLINE vkQueuePresentKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkQueuePresentKHR
+-- >     ( VkQueue queue
+-- >     , const VkPresentInfoKHR* pPresentInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueuePresentKHR <- vkGetInstanceProc @VkQueuePresentKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
+--
+-- __Note:__ @vkQueuePresentKHRUnsafe@ and @vkQueuePresentKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueuePresentKHR@ is an alias
+--           of @vkQueuePresentKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueuePresentKHRSafe@.
+--
+vkQueuePresentKHR :: VkQueue -- ^ queue
+                             -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
+                                                     -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkQueuePresentKHR = vkQueuePresentKHRUnsafe
+#else
+vkQueuePresentKHR = vkQueuePresentKHRSafe
+
+#endif
+{-# INLINE vkQueuePresentKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -927,8 +1192,8 @@
 
 type PFN_vkQueuePresentKHR = FunPtr HS_vkQueuePresentKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkQueuePresentKHR ::
-               PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR
+foreign import ccall unsafe "dynamic" unwrapVkQueuePresentKHRUnsafe
+               :: PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR
 
 foreign import ccall safe "dynamic" unwrapVkQueuePresentKHRSafe ::
                PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR
@@ -938,9 +1203,9 @@
         vkProcSymbol = _VkQueuePresentKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueuePresentKHR
+        unwrapVkProcPtrUnsafe = unwrapVkQueuePresentKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkQueuePresentKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -1045,28 +1310,32 @@
 --
 -- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ and @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPresentCapabilitiesKHR@ is an alias
+--           of @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPresentCapabilitiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe
                "vkGetDeviceGroupPresentCapabilitiesKHR"
-               vkGetDeviceGroupPresentCapabilitiesKHR ::
+               vkGetDeviceGroupPresentCapabilitiesKHRUnsafe ::
                VkDevice -- ^ device
                         -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                    -> IO VkResult
 
 #else
-vkGetDeviceGroupPresentCapabilitiesKHR ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
-                                                                                 -> IO VkResult
-vkGetDeviceGroupPresentCapabilitiesKHR
+vkGetDeviceGroupPresentCapabilitiesKHRUnsafe ::
+                                             VkDevice -- ^ device
+                                                      ->
+                                               Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
+                                                                                       ->
+                                                 IO VkResult
+vkGetDeviceGroupPresentCapabilitiesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR)
+      (vkGetProcUnsafe @VkGetDeviceGroupPresentCapabilitiesKHR)
 
-{-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHR #-}
+{-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHRUnsafe #-}
 #endif
 
 -- |
@@ -1093,9 +1362,12 @@
 --
 -- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ and @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPresentCapabilitiesKHR@ is an alias
+--           of @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPresentCapabilitiesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkGetDeviceGroupPresentCapabilitiesKHR"
                vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
@@ -1116,6 +1388,50 @@
 {-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
+-- >     ( VkDevice device
+-- >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetDeviceProc @VkGetDeviceGroupPresentCapabilitiesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
+--
+-- __Note:__ @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ and @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPresentCapabilitiesKHR@ is an alias
+--           of @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPresentCapabilitiesKHRSafe@.
+--
+vkGetDeviceGroupPresentCapabilitiesKHR ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
+                                                                                 -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceGroupPresentCapabilitiesKHR
+  = vkGetDeviceGroupPresentCapabilitiesKHRUnsafe
+#else
+vkGetDeviceGroupPresentCapabilitiesKHR
+  = vkGetDeviceGroupPresentCapabilitiesKHRSafe
+
+#endif
+{-# INLINE vkGetDeviceGroupPresentCapabilitiesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -1135,7 +1451,7 @@
      FunPtr HS_vkGetDeviceGroupPresentCapabilitiesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceGroupPresentCapabilitiesKHR ::
+               unwrapVkGetDeviceGroupPresentCapabilitiesKHRUnsafe ::
                PFN_vkGetDeviceGroupPresentCapabilitiesKHR ->
                  HS_vkGetDeviceGroupPresentCapabilitiesKHR
 
@@ -1150,9 +1466,10 @@
         vkProcSymbol = _VkGetDeviceGroupPresentCapabilitiesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceGroupPresentCapabilitiesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDeviceGroupPresentCapabilitiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe
 
@@ -1205,13 +1522,16 @@
 --
 -- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ and @vkGetDeviceGroupSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupSurfacePresentModesKHR@ is an alias
+--           of @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupSurfacePresentModesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe
                "vkGetDeviceGroupSurfacePresentModesKHR"
-               vkGetDeviceGroupSurfacePresentModesKHR ::
+               vkGetDeviceGroupSurfacePresentModesKHRUnsafe ::
                VkDevice -- ^ device
                         ->
                  VkSurfaceKHR -- ^ surface
@@ -1219,18 +1539,18 @@
                                                                       -> IO VkResult
 
 #else
-vkGetDeviceGroupSurfacePresentModesKHR ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         VkSurfaceKHR -- ^ surface
+vkGetDeviceGroupSurfacePresentModesKHRUnsafe ::
+                                             VkDevice -- ^ device
                                                       ->
-                                           Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
-                                                                                -> IO VkResult
-vkGetDeviceGroupSurfacePresentModesKHR
+                                               VkSurfaceKHR -- ^ surface
+                                                            ->
+                                                 Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
+                                                                                      -> IO VkResult
+vkGetDeviceGroupSurfacePresentModesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR)
+      (vkGetProcUnsafe @VkGetDeviceGroupSurfacePresentModesKHR)
 
-{-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHR #-}
+{-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHRUnsafe #-}
 #endif
 
 -- |
@@ -1258,9 +1578,12 @@
 --
 -- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ and @vkGetDeviceGroupSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupSurfacePresentModesKHR@ is an alias
+--           of @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupSurfacePresentModesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkGetDeviceGroupSurfacePresentModesKHR"
                vkGetDeviceGroupSurfacePresentModesKHRSafe ::
@@ -1285,6 +1608,53 @@
 {-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkGetDeviceGroupSurfacePresentModesKHR
+-- >     ( VkDevice device
+-- >     , VkSurfaceKHR surface
+-- >     , VkDeviceGroupPresentModeFlagsKHR* pModes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
+--
+-- __Note:__ @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ and @vkGetDeviceGroupSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupSurfacePresentModesKHR@ is an alias
+--           of @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupSurfacePresentModesKHRSafe@.
+--
+vkGetDeviceGroupSurfacePresentModesKHR ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         VkSurfaceKHR -- ^ surface
+                                                      ->
+                                           Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
+                                                                                -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceGroupSurfacePresentModesKHR
+  = vkGetDeviceGroupSurfacePresentModesKHRUnsafe
+#else
+vkGetDeviceGroupSurfacePresentModesKHR
+  = vkGetDeviceGroupSurfacePresentModesKHRSafe
+
+#endif
+{-# INLINE vkGetDeviceGroupSurfacePresentModesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -1307,7 +1677,7 @@
      FunPtr HS_vkGetDeviceGroupSurfacePresentModesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceGroupSurfacePresentModesKHR ::
+               unwrapVkGetDeviceGroupSurfacePresentModesKHRUnsafe ::
                PFN_vkGetDeviceGroupSurfacePresentModesKHR ->
                  HS_vkGetDeviceGroupSurfacePresentModesKHR
 
@@ -1322,9 +1692,10 @@
         vkProcSymbol = _VkGetDeviceGroupSurfacePresentModesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceGroupSurfacePresentModesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetDeviceGroupSurfacePresentModesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe
 
@@ -1378,13 +1749,16 @@
 --
 -- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ and @vkGetPhysicalDevicePresentRectanglesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDevicePresentRectanglesKHR@ is an alias
+--           of @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePresentRectanglesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe
                "vkGetPhysicalDevicePresentRectanglesKHR"
-               vkGetPhysicalDevicePresentRectanglesKHR ::
+               vkGetPhysicalDevicePresentRectanglesKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  VkSurfaceKHR -- ^ surface
@@ -1393,18 +1767,19 @@
                                                             -> IO VkResult
 
 #else
-vkGetPhysicalDevicePresentRectanglesKHR ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          VkSurfaceKHR -- ^ surface
-                                                       -> Ptr Word32 -- ^ pRectCount
-                                                                     -> Ptr VkRect2D -- ^ pRects
-                                                                                     -> IO VkResult
-vkGetPhysicalDevicePresentRectanglesKHR
+vkGetPhysicalDevicePresentRectanglesKHRUnsafe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                VkSurfaceKHR -- ^ surface
+                                                             ->
+                                                  Ptr Word32 -- ^ pRectCount
+                                                             -> Ptr VkRect2D -- ^ pRects
+                                                                             -> IO VkResult
+vkGetPhysicalDevicePresentRectanglesKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDevicePresentRectanglesKHR)
 
-{-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHR #-}
+{-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHRUnsafe #-}
 #endif
 
 -- |
@@ -1433,9 +1808,12 @@
 --
 -- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ and @vkGetPhysicalDevicePresentRectanglesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDevicePresentRectanglesKHR@ is an alias
+--           of @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePresentRectanglesKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkGetPhysicalDevicePresentRectanglesKHR"
                vkGetPhysicalDevicePresentRectanglesKHRSafe ::
@@ -1462,6 +1840,54 @@
 {-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPhysicalDevicePresentRectanglesKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkSurfaceKHR surface
+-- >     , uint32_t* pRectCount
+-- >     , VkRect2D* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
+--
+-- __Note:__ @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ and @vkGetPhysicalDevicePresentRectanglesKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDevicePresentRectanglesKHR@ is an alias
+--           of @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePresentRectanglesKHRSafe@.
+--
+vkGetPhysicalDevicePresentRectanglesKHR ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          VkSurfaceKHR -- ^ surface
+                                                       -> Ptr Word32 -- ^ pRectCount
+                                                                     -> Ptr VkRect2D -- ^ pRects
+                                                                                     -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDevicePresentRectanglesKHR
+  = vkGetPhysicalDevicePresentRectanglesKHRUnsafe
+#else
+vkGetPhysicalDevicePresentRectanglesKHR
+  = vkGetPhysicalDevicePresentRectanglesKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDevicePresentRectanglesKHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -1486,7 +1912,7 @@
      FunPtr HS_vkGetPhysicalDevicePresentRectanglesKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDevicePresentRectanglesKHR ::
+               unwrapVkGetPhysicalDevicePresentRectanglesKHRUnsafe ::
                PFN_vkGetPhysicalDevicePresentRectanglesKHR ->
                  HS_vkGetPhysicalDevicePresentRectanglesKHR
 
@@ -1501,9 +1927,10 @@
         vkProcSymbol = _VkGetPhysicalDevicePresentRectanglesKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDevicePresentRectanglesKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDevicePresentRectanglesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe
 
@@ -1553,12 +1980,15 @@
 --
 -- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkAcquireNextImage2KHRUnsafe@ and @vkAcquireNextImage2KHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAcquireNextImage2KHR@ is an alias
+--           of @vkAcquireNextImage2KHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAcquireNextImage2KHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe "vkAcquireNextImage2KHR"
-               vkAcquireNextImage2KHR ::
+               vkAcquireNextImage2KHRUnsafe ::
                VkDevice -- ^ device
                         ->
                  Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
@@ -1566,16 +1996,16 @@
                                                              -> IO VkResult
 
 #else
-vkAcquireNextImage2KHR ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
-                                                       -> Ptr Word32 -- ^ pImageIndex
-                                                                     -> IO VkResult
-vkAcquireNextImage2KHR
-  = unsafeDupablePerformIO (vkGetProc @VkAcquireNextImage2KHR)
+vkAcquireNextImage2KHRUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
+                                                             -> Ptr Word32 -- ^ pImageIndex
+                                                                           -> IO VkResult
+vkAcquireNextImage2KHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkAcquireNextImage2KHR)
 
-{-# NOINLINE vkAcquireNextImage2KHR #-}
+{-# NOINLINE vkAcquireNextImage2KHRUnsafe #-}
 #endif
 
 -- |
@@ -1603,9 +2033,12 @@
 --
 -- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkAcquireNextImage2KHRUnsafe@ and @vkAcquireNextImage2KHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAcquireNextImage2KHR@ is an alias
+--           of @vkAcquireNextImage2KHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAcquireNextImage2KHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkAcquireNextImage2KHR"
                vkAcquireNextImage2KHRSafe ::
@@ -1628,6 +2061,50 @@
 {-# NOINLINE vkAcquireNextImage2KHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+-- > VkResult vkAcquireNextImage2KHR
+-- >     ( VkDevice device
+-- >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
+-- >     , uint32_t* pImageIndex
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
+--
+-- or less efficient:
+--
+-- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
+--
+-- __Note:__ @vkAcquireNextImage2KHRUnsafe@ and @vkAcquireNextImage2KHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAcquireNextImage2KHR@ is an alias
+--           of @vkAcquireNextImage2KHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAcquireNextImage2KHRSafe@.
+--
+vkAcquireNextImage2KHR ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
+                                                       -> Ptr Word32 -- ^ pImageIndex
+                                                                     -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkAcquireNextImage2KHR = vkAcquireNextImage2KHRUnsafe
+#else
+vkAcquireNextImage2KHR = vkAcquireNextImage2KHRSafe
+
+#endif
+{-# INLINE vkAcquireNextImage2KHR #-}
+
 -- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -1648,8 +2125,9 @@
 
 type PFN_vkAcquireNextImage2KHR = FunPtr HS_vkAcquireNextImage2KHR
 
-foreign import ccall unsafe "dynamic" unwrapVkAcquireNextImage2KHR
-               :: PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkAcquireNextImage2KHRUnsafe ::
+               PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR
 
 foreign import ccall safe "dynamic"
                unwrapVkAcquireNextImage2KHRSafe ::
@@ -1661,9 +2139,9 @@
         vkProcSymbol = _VkAcquireNextImage2KHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAcquireNextImage2KHR
+        unwrapVkProcPtrUnsafe = unwrapVkAcquireNextImage2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkAcquireNextImage2KHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs
@@ -11,7 +11,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall@
+        -- contact: @Jesse Hall @critsec@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall,Ian Elliott ianelliott@google.com@
+        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -38,12 +38,14 @@
         -- > #include "vk_platform.h"
         VkCreateWaylandSurfaceKHR, pattern VkCreateWaylandSurfaceKHR,
         HS_vkCreateWaylandSurfaceKHR, PFN_vkCreateWaylandSurfaceKHR,
-        vkCreateWaylandSurfaceKHR, vkCreateWaylandSurfaceKHRSafe,
+        vkCreateWaylandSurfaceKHR, vkCreateWaylandSurfaceKHRUnsafe,
+        vkCreateWaylandSurfaceKHRSafe,
         VkGetPhysicalDeviceWaylandPresentationSupportKHR,
         pattern VkGetPhysicalDeviceWaylandPresentationSupportKHR,
         HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR,
         PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR,
         vkGetPhysicalDeviceWaylandPresentationSupportKHR,
+        vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
@@ -120,12 +122,15 @@
 --
 -- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateWaylandSurfaceKHRUnsafe@ and @vkCreateWaylandSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateWaylandSurfaceKHR@ is an alias
+--           of @vkCreateWaylandSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateWaylandSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateWaylandSurfaceKHR"
-               vkCreateWaylandSurfaceKHR ::
+               vkCreateWaylandSurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkWaylandSurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -135,18 +140,19 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateWaylandSurfaceKHR ::
-                          VkInstance -- ^ instance
-                                     ->
-                            Ptr VkWaylandSurfaceCreateInfoKHR -- ^ pCreateInfo
-                                                              ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                            -> IO VkResult
-vkCreateWaylandSurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateWaylandSurfaceKHR)
+vkCreateWaylandSurfaceKHRUnsafe ::
+                                VkInstance -- ^ instance
+                                           ->
+                                  Ptr VkWaylandSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                                    ->
+                                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                                  -> IO VkResult
+vkCreateWaylandSurfaceKHRUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateWaylandSurfaceKHR)
 
-{-# NOINLINE vkCreateWaylandSurfaceKHR #-}
+{-# NOINLINE vkCreateWaylandSurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -175,9 +181,12 @@
 --
 -- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateWaylandSurfaceKHRUnsafe@ and @vkCreateWaylandSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateWaylandSurfaceKHR@ is an alias
+--           of @vkCreateWaylandSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateWaylandSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateWaylandSurfaceKHR"
                vkCreateWaylandSurfaceKHRSafe ::
@@ -204,6 +213,53 @@
 {-# NOINLINE vkCreateWaylandSurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateWaylandSurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkWaylandSurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateWaylandSurfaceKHR <- vkGetInstanceProc @VkCreateWaylandSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
+--
+-- __Note:__ @vkCreateWaylandSurfaceKHRUnsafe@ and @vkCreateWaylandSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateWaylandSurfaceKHR@ is an alias
+--           of @vkCreateWaylandSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateWaylandSurfaceKHRSafe@.
+--
+vkCreateWaylandSurfaceKHR ::
+                          VkInstance -- ^ instance
+                                     ->
+                            Ptr VkWaylandSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                              ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                            -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateWaylandSurfaceKHR = vkCreateWaylandSurfaceKHRUnsafe
+#else
+vkCreateWaylandSurfaceKHR = vkCreateWaylandSurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateWaylandSurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -229,7 +285,7 @@
      FunPtr HS_vkCreateWaylandSurfaceKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateWaylandSurfaceKHR ::
+               unwrapVkCreateWaylandSurfaceKHRUnsafe ::
                PFN_vkCreateWaylandSurfaceKHR -> HS_vkCreateWaylandSurfaceKHR
 
 foreign import ccall safe "dynamic"
@@ -242,9 +298,9 @@
         vkProcSymbol = _VkCreateWaylandSurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateWaylandSurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateWaylandSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateWaylandSurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -294,30 +350,34 @@
 --
 -- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceWaylandPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
-               vkGetPhysicalDeviceWaylandPresentationSupportKHR ::
+               vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 -> Word32 -- ^ queueFamilyIndex
                                           -> Ptr WlDisplay -- ^ display
                                                            -> IO VkBool32
 
 #else
-vkGetPhysicalDeviceWaylandPresentationSupportKHR ::
-                                                 VkPhysicalDevice -- ^ physicalDevice
-                                                                  ->
-                                                   Word32 -- ^ queueFamilyIndex
-                                                          -> Ptr WlDisplay -- ^ display
-                                                                           -> IO VkBool32
-vkGetPhysicalDeviceWaylandPresentationSupportKHR
+vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe ::
+                                                       VkPhysicalDevice -- ^ physicalDevice
+                                                                        ->
+                                                         Word32 -- ^ queueFamilyIndex
+                                                                -> Ptr WlDisplay -- ^ display
+                                                                                 -> IO VkBool32
+vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceWaylandPresentationSupportKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceWaylandPresentationSupportKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe
+             #-}
 #endif
 
 -- |
@@ -341,9 +401,12 @@
 --
 -- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceWaylandPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
@@ -368,6 +431,48 @@
              #-}
 #endif
 
+-- |
+-- > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t queueFamilyIndex
+-- >     , struct wl_display* display
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceWaylandPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@.
+--
+vkGetPhysicalDeviceWaylandPresentationSupportKHR ::
+                                                 VkPhysicalDevice -- ^ physicalDevice
+                                                                  ->
+                                                   Word32 -- ^ queueFamilyIndex
+                                                          -> Ptr WlDisplay -- ^ display
+                                                                           -> IO VkBool32
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceWaylandPresentationSupportKHR
+  = vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe
+#else
+vkGetPhysicalDeviceWaylandPresentationSupportKHR
+  = vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceWaylandPresentationSupportKHR #-}
+
 -- | > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -385,7 +490,7 @@
      FunPtr HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHR ::
+               unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe ::
                PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
 
@@ -402,10 +507,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceWaylandPresentationSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Carsten Rohde@
+        -- contact: @Carsten Rohde @crohde@
         --
         -- author: @KHR@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall,Ian Elliott ianelliott@google.com@
+        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -38,12 +38,14 @@
         -- > #include "vk_platform.h"
         VkCreateWin32SurfaceKHR, pattern VkCreateWin32SurfaceKHR,
         HS_vkCreateWin32SurfaceKHR, PFN_vkCreateWin32SurfaceKHR,
-        vkCreateWin32SurfaceKHR, vkCreateWin32SurfaceKHRSafe,
+        vkCreateWin32SurfaceKHR, vkCreateWin32SurfaceKHRUnsafe,
+        vkCreateWin32SurfaceKHRSafe,
         VkGetPhysicalDeviceWin32PresentationSupportKHR,
         pattern VkGetPhysicalDeviceWin32PresentationSupportKHR,
         HS_vkGetPhysicalDeviceWin32PresentationSupportKHR,
         PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR,
         vkGetPhysicalDeviceWin32PresentationSupportKHR,
+        vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceWin32PresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
@@ -120,12 +122,15 @@
 --
 -- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateWin32SurfaceKHRUnsafe@ and @vkCreateWin32SurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateWin32SurfaceKHR@ is an alias
+--           of @vkCreateWin32SurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateWin32SurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateWin32SurfaceKHR"
-               vkCreateWin32SurfaceKHR ::
+               vkCreateWin32SurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkWin32SurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -135,18 +140,18 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateWin32SurfaceKHR ::
-                        VkInstance -- ^ instance
-                                   ->
-                          Ptr VkWin32SurfaceCreateInfoKHR -- ^ pCreateInfo
-                                                          ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                          -> IO VkResult
-vkCreateWin32SurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateWin32SurfaceKHR)
+vkCreateWin32SurfaceKHRUnsafe ::
+                              VkInstance -- ^ instance
+                                         ->
+                                Ptr VkWin32SurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                                ->
+                                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                                -> IO VkResult
+vkCreateWin32SurfaceKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateWin32SurfaceKHR)
 
-{-# NOINLINE vkCreateWin32SurfaceKHR #-}
+{-# NOINLINE vkCreateWin32SurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -175,9 +180,12 @@
 --
 -- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateWin32SurfaceKHRUnsafe@ and @vkCreateWin32SurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateWin32SurfaceKHR@ is an alias
+--           of @vkCreateWin32SurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateWin32SurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateWin32SurfaceKHR"
                vkCreateWin32SurfaceKHRSafe ::
@@ -204,6 +212,53 @@
 {-# NOINLINE vkCreateWin32SurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateWin32SurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkWin32SurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateWin32SurfaceKHR <- vkGetInstanceProc @VkCreateWin32SurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
+--
+-- __Note:__ @vkCreateWin32SurfaceKHRUnsafe@ and @vkCreateWin32SurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateWin32SurfaceKHR@ is an alias
+--           of @vkCreateWin32SurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateWin32SurfaceKHRSafe@.
+--
+vkCreateWin32SurfaceKHR ::
+                        VkInstance -- ^ instance
+                                   ->
+                          Ptr VkWin32SurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                          ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                          -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateWin32SurfaceKHR = vkCreateWin32SurfaceKHRUnsafe
+#else
+vkCreateWin32SurfaceKHR = vkCreateWin32SurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateWin32SurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -228,8 +283,9 @@
 type PFN_vkCreateWin32SurfaceKHR =
      FunPtr HS_vkCreateWin32SurfaceKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateWin32SurfaceKHR
-               :: PFN_vkCreateWin32SurfaceKHR -> HS_vkCreateWin32SurfaceKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateWin32SurfaceKHRUnsafe ::
+               PFN_vkCreateWin32SurfaceKHR -> HS_vkCreateWin32SurfaceKHR
 
 foreign import ccall safe "dynamic"
                unwrapVkCreateWin32SurfaceKHRSafe ::
@@ -241,9 +297,9 @@
         vkProcSymbol = _VkCreateWin32SurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateWin32SurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateWin32SurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateWin32SurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -292,27 +348,31 @@
 --
 -- > myGetPhysicalDeviceWin32PresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWin32PresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceWin32PresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceWin32PresentationSupportKHR"
-               vkGetPhysicalDeviceWin32PresentationSupportKHR ::
+               vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 -> Word32 -- ^ queueFamilyIndex
                                           -> IO VkBool32
 
 #else
-vkGetPhysicalDeviceWin32PresentationSupportKHR ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                -> Word32 -- ^ queueFamilyIndex
-                                                                          -> IO VkBool32
-vkGetPhysicalDeviceWin32PresentationSupportKHR
+vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe ::
+                                                     VkPhysicalDevice -- ^ physicalDevice
+                                                                      -> Word32 -- ^ queueFamilyIndex
+                                                                                -> IO VkBool32
+vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceWin32PresentationSupportKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceWin32PresentationSupportKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceWin32PresentationSupportKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe
+             #-}
 #endif
 
 -- |
@@ -335,9 +395,12 @@
 --
 -- > myGetPhysicalDeviceWin32PresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWin32PresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceWin32PresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceWin32PresentationSupportKHR"
@@ -358,6 +421,45 @@
 {-# NOINLINE vkGetPhysicalDeviceWin32PresentationSupportKHRSafe #-}
 #endif
 
+-- |
+-- > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t queueFamilyIndex
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceWin32PresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceWin32PresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceWin32PresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWin32PresentationSupportKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceWin32PresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@.
+--
+vkGetPhysicalDeviceWin32PresentationSupportKHR ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                -> Word32 -- ^ queueFamilyIndex
+                                                                          -> IO VkBool32
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceWin32PresentationSupportKHR
+  = vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe
+#else
+vkGetPhysicalDeviceWin32PresentationSupportKHR
+  = vkGetPhysicalDeviceWin32PresentationSupportKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceWin32PresentationSupportKHR #-}
+
 -- | > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -373,7 +475,7 @@
      FunPtr HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceWin32PresentationSupportKHR ::
+               unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe ::
                PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
 
@@ -390,10 +492,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceWin32PresentationSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall,Ian Elliott ianelliott@google.com@
+        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -38,12 +38,14 @@
         -- > #include "vk_platform.h"
         VkCreateXcbSurfaceKHR, pattern VkCreateXcbSurfaceKHR,
         HS_vkCreateXcbSurfaceKHR, PFN_vkCreateXcbSurfaceKHR,
-        vkCreateXcbSurfaceKHR, vkCreateXcbSurfaceKHRSafe,
+        vkCreateXcbSurfaceKHR, vkCreateXcbSurfaceKHRUnsafe,
+        vkCreateXcbSurfaceKHRSafe,
         VkGetPhysicalDeviceXcbPresentationSupportKHR,
         pattern VkGetPhysicalDeviceXcbPresentationSupportKHR,
         HS_vkGetPhysicalDeviceXcbPresentationSupportKHR,
         PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR,
         vkGetPhysicalDeviceXcbPresentationSupportKHR,
+        vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceXcbPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
@@ -119,12 +121,15 @@
 --
 -- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateXcbSurfaceKHRUnsafe@ and @vkCreateXcbSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateXcbSurfaceKHR@ is an alias
+--           of @vkCreateXcbSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateXcbSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateXcbSurfaceKHR"
-               vkCreateXcbSurfaceKHR ::
+               vkCreateXcbSurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkXcbSurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -134,18 +139,18 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateXcbSurfaceKHR ::
-                      VkInstance -- ^ instance
-                                 ->
-                        Ptr VkXcbSurfaceCreateInfoKHR -- ^ pCreateInfo
-                                                      ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                        -> IO VkResult
-vkCreateXcbSurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateXcbSurfaceKHR)
+vkCreateXcbSurfaceKHRUnsafe ::
+                            VkInstance -- ^ instance
+                                       ->
+                              Ptr VkXcbSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                            ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                              -> IO VkResult
+vkCreateXcbSurfaceKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateXcbSurfaceKHR)
 
-{-# NOINLINE vkCreateXcbSurfaceKHR #-}
+{-# NOINLINE vkCreateXcbSurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -174,9 +179,12 @@
 --
 -- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateXcbSurfaceKHRUnsafe@ and @vkCreateXcbSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateXcbSurfaceKHR@ is an alias
+--           of @vkCreateXcbSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateXcbSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateXcbSurfaceKHR"
                vkCreateXcbSurfaceKHRSafe ::
@@ -203,6 +211,53 @@
 {-# NOINLINE vkCreateXcbSurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateXcbSurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkXcbSurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateXcbSurfaceKHR <- vkGetInstanceProc @VkCreateXcbSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
+--
+-- __Note:__ @vkCreateXcbSurfaceKHRUnsafe@ and @vkCreateXcbSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateXcbSurfaceKHR@ is an alias
+--           of @vkCreateXcbSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateXcbSurfaceKHRSafe@.
+--
+vkCreateXcbSurfaceKHR ::
+                      VkInstance -- ^ instance
+                                 ->
+                        Ptr VkXcbSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                      ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                        -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateXcbSurfaceKHR = vkCreateXcbSurfaceKHRUnsafe
+#else
+vkCreateXcbSurfaceKHR = vkCreateXcbSurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateXcbSurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -226,8 +281,9 @@
 
 type PFN_vkCreateXcbSurfaceKHR = FunPtr HS_vkCreateXcbSurfaceKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateXcbSurfaceKHR
-               :: PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateXcbSurfaceKHRUnsafe ::
+               PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
 
 foreign import ccall safe "dynamic" unwrapVkCreateXcbSurfaceKHRSafe
                :: PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
@@ -237,9 +293,9 @@
         vkProcSymbol = _VkCreateXcbSurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateXcbSurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateXcbSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateXcbSurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -289,13 +345,16 @@
 --
 -- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceXcbPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceXcbPresentationSupportKHR"
-               vkGetPhysicalDeviceXcbPresentationSupportKHR ::
+               vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Word32 -- ^ queueFamilyIndex
@@ -304,19 +363,20 @@
                                                               -> IO VkBool32
 
 #else
-vkGetPhysicalDeviceXcbPresentationSupportKHR ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               Word32 -- ^ queueFamilyIndex
-                                                      ->
-                                                 Ptr XcbConnectionT -- ^ connection
-                                                                    -> XcbVisualidT -- ^ visual_id
-                                                                                    -> IO VkBool32
-vkGetPhysicalDeviceXcbPresentationSupportKHR
+vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     Word32 -- ^ queueFamilyIndex
+                                                            ->
+                                                       Ptr XcbConnectionT -- ^ connection
+                                                                          ->
+                                                         XcbVisualidT -- ^ visual_id
+                                                                      -> IO VkBool32
+vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceXcbPresentationSupportKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceXcbPresentationSupportKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe #-}
 #endif
 
 -- |
@@ -341,9 +401,12 @@
 --
 -- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceXcbPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceXcbPresentationSupportKHR"
@@ -372,6 +435,51 @@
 {-# NOINLINE vkGetPhysicalDeviceXcbPresentationSupportKHRSafe #-}
 #endif
 
+-- |
+-- > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t queueFamilyIndex
+-- >     , xcb_connection_t* connection
+-- >     , xcb_visualid_t visual_id
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXcbPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceXcbPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@.
+--
+vkGetPhysicalDeviceXcbPresentationSupportKHR ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               Word32 -- ^ queueFamilyIndex
+                                                      ->
+                                                 Ptr XcbConnectionT -- ^ connection
+                                                                    -> XcbVisualidT -- ^ visual_id
+                                                                                    -> IO VkBool32
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceXcbPresentationSupportKHR
+  = vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe
+#else
+vkGetPhysicalDeviceXcbPresentationSupportKHR
+  = vkGetPhysicalDeviceXcbPresentationSupportKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceXcbPresentationSupportKHR #-}
+
 -- | > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -392,7 +500,7 @@
      FunPtr HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceXcbPresentationSupportKHR ::
+               unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe ::
                PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
 
@@ -408,10 +516,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceXcbPresentationSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
@@ -17,7 +17,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jesse Hall @jessehall,Ian Elliott ianelliott@google.com@
+        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
         --
         -- author: @KHR@
         --
@@ -38,12 +38,14 @@
         -- > #include "vk_platform.h"
         VkCreateXlibSurfaceKHR, pattern VkCreateXlibSurfaceKHR,
         HS_vkCreateXlibSurfaceKHR, PFN_vkCreateXlibSurfaceKHR,
-        vkCreateXlibSurfaceKHR, vkCreateXlibSurfaceKHRSafe,
+        vkCreateXlibSurfaceKHR, vkCreateXlibSurfaceKHRUnsafe,
+        vkCreateXlibSurfaceKHRSafe,
         VkGetPhysicalDeviceXlibPresentationSupportKHR,
         pattern VkGetPhysicalDeviceXlibPresentationSupportKHR,
         HS_vkGetPhysicalDeviceXlibPresentationSupportKHR,
         PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR,
         vkGetPhysicalDeviceXlibPresentationSupportKHR,
+        vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceXlibPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.InternalAllocationType,
@@ -120,12 +122,15 @@
 --
 -- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateXlibSurfaceKHRUnsafe@ and @vkCreateXlibSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateXlibSurfaceKHR@ is an alias
+--           of @vkCreateXlibSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateXlibSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateXlibSurfaceKHR"
-               vkCreateXlibSurfaceKHR ::
+               vkCreateXlibSurfaceKHRUnsafe ::
                VkInstance -- ^ instance
                           ->
                  Ptr VkXlibSurfaceCreateInfoKHR -- ^ pCreateInfo
@@ -135,18 +140,18 @@
                                                                  -> IO VkResult
 
 #else
-vkCreateXlibSurfaceKHR ::
-                       VkInstance -- ^ instance
-                                  ->
-                         Ptr VkXlibSurfaceCreateInfoKHR -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkSurfaceKHR -- ^ pSurface
-                                                                         -> IO VkResult
-vkCreateXlibSurfaceKHR
-  = unsafeDupablePerformIO (vkGetProc @VkCreateXlibSurfaceKHR)
+vkCreateXlibSurfaceKHRUnsafe ::
+                             VkInstance -- ^ instance
+                                        ->
+                               Ptr VkXlibSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                              ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                               -> IO VkResult
+vkCreateXlibSurfaceKHRUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateXlibSurfaceKHR)
 
-{-# NOINLINE vkCreateXlibSurfaceKHR #-}
+{-# NOINLINE vkCreateXlibSurfaceKHRUnsafe #-}
 #endif
 
 -- |
@@ -175,9 +180,12 @@
 --
 -- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkCreateXlibSurfaceKHRUnsafe@ and @vkCreateXlibSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateXlibSurfaceKHR@ is an alias
+--           of @vkCreateXlibSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateXlibSurfaceKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateXlibSurfaceKHR"
                vkCreateXlibSurfaceKHRSafe ::
@@ -204,6 +212,53 @@
 {-# NOINLINE vkCreateXlibSurfaceKHRSafe #-}
 #endif
 
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateXlibSurfaceKHR
+-- >     ( VkInstance instance
+-- >     , const VkXlibSurfaceCreateInfoKHR* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSurfaceKHR* pSurface
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateXlibSurfaceKHR <- vkGetInstanceProc @VkCreateXlibSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
+--
+-- __Note:__ @vkCreateXlibSurfaceKHRUnsafe@ and @vkCreateXlibSurfaceKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateXlibSurfaceKHR@ is an alias
+--           of @vkCreateXlibSurfaceKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateXlibSurfaceKHRSafe@.
+--
+vkCreateXlibSurfaceKHR ::
+                       VkInstance -- ^ instance
+                                  ->
+                         Ptr VkXlibSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                         -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateXlibSurfaceKHR = vkCreateXlibSurfaceKHRUnsafe
+#else
+vkCreateXlibSurfaceKHR = vkCreateXlibSurfaceKHRSafe
+
+#endif
+{-# INLINE vkCreateXlibSurfaceKHR #-}
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -227,8 +282,9 @@
 
 type PFN_vkCreateXlibSurfaceKHR = FunPtr HS_vkCreateXlibSurfaceKHR
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateXlibSurfaceKHR
-               :: PFN_vkCreateXlibSurfaceKHR -> HS_vkCreateXlibSurfaceKHR
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateXlibSurfaceKHRUnsafe ::
+               PFN_vkCreateXlibSurfaceKHR -> HS_vkCreateXlibSurfaceKHR
 
 foreign import ccall safe "dynamic"
                unwrapVkCreateXlibSurfaceKHRSafe ::
@@ -240,9 +296,9 @@
         vkProcSymbol = _VkCreateXlibSurfaceKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateXlibSurfaceKHR
+        unwrapVkProcPtrUnsafe = unwrapVkCreateXlibSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateXlibSurfaceKHRSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -292,13 +348,16 @@
 --
 -- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceXlibPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceXlibPresentationSupportKHR"
-               vkGetPhysicalDeviceXlibPresentationSupportKHR ::
+               vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Word32 -- ^ queueFamilyIndex
@@ -307,18 +366,20 @@
                                                    -> IO VkBool32
 
 #else
-vkGetPhysicalDeviceXlibPresentationSupportKHR ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Word32 -- ^ queueFamilyIndex
-                                                       -> Ptr Display -- ^ dpy
-                                                                      -> VisualID -- ^ visualID
-                                                                                  -> IO VkBool32
-vkGetPhysicalDeviceXlibPresentationSupportKHR
+vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe ::
+                                                    VkPhysicalDevice -- ^ physicalDevice
+                                                                     ->
+                                                      Word32 -- ^ queueFamilyIndex
+                                                             ->
+                                                        Ptr Display -- ^ dpy
+                                                                    -> VisualID -- ^ visualID
+                                                                                -> IO VkBool32
+vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe
   = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR)
+      (vkGetProcUnsafe @VkGetPhysicalDeviceXlibPresentationSupportKHR)
 
-{-# NOINLINE vkGetPhysicalDeviceXlibPresentationSupportKHR #-}
+{-# NOINLINE vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe
+             #-}
 #endif
 
 -- |
@@ -343,9 +404,12 @@
 --
 -- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
 --
--- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
---           using @unsafe@ of @safe@ FFI respectively.
+-- __Note:__ @vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceXlibPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@.
 --
+--
 #ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceXlibPresentationSupportKHR"
@@ -372,6 +436,50 @@
 {-# NOINLINE vkGetPhysicalDeviceXlibPresentationSupportKHRSafe #-}
 #endif
 
+-- |
+-- > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t queueFamilyIndex
+-- >     , Display* dpy
+-- >     , VisualID visualID
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXlibPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
+--
+-- __Note:__ @vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe@ and @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceXlibPresentationSupportKHR@ is an alias
+--           of @vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@.
+--
+vkGetPhysicalDeviceXlibPresentationSupportKHR ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Word32 -- ^ queueFamilyIndex
+                                                       -> Ptr Display -- ^ dpy
+                                                                      -> VisualID -- ^ visualID
+                                                                                  -> IO VkBool32
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceXlibPresentationSupportKHR
+  = vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe
+#else
+vkGetPhysicalDeviceXlibPresentationSupportKHR
+  = vkGetPhysicalDeviceXlibPresentationSupportKHRSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceXlibPresentationSupportKHR #-}
+
 -- | > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -392,7 +500,7 @@
      FunPtr HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceXlibPresentationSupportKHR ::
+               unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe ::
                PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
 
@@ -408,10 +516,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceXlibPresentationSupportKHR
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHR
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -103,8 +104,9 @@
 
 type PFN_vkCreateIOSSurfaceMVK = FunPtr HS_vkCreateIOSSurfaceMVK
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateIOSSurfaceMVK
-               :: PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateIOSSurfaceMVKUnsafe ::
+               PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
 
 foreign import ccall safe "dynamic" unwrapVkCreateIOSSurfaceMVKSafe
                :: PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
@@ -114,9 +116,9 @@
         vkProcSymbol = _VkCreateIOSSurfaceMVK
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateIOSSurfaceMVK
+        unwrapVkProcPtrUnsafe = unwrapVkCreateIOSSurfaceMVKUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateIOSSurfaceMVKSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -105,8 +106,9 @@
 type PFN_vkCreateMacOSSurfaceMVK =
      FunPtr HS_vkCreateMacOSSurfaceMVK
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateMacOSSurfaceMVK
-               :: PFN_vkCreateMacOSSurfaceMVK -> HS_vkCreateMacOSSurfaceMVK
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateMacOSSurfaceMVKUnsafe ::
+               PFN_vkCreateMacOSSurfaceMVK -> HS_vkCreateMacOSSurfaceMVK
 
 foreign import ccall safe "dynamic"
                unwrapVkCreateMacOSSurfaceMVKSafe ::
@@ -118,9 +120,9 @@
         vkProcSymbol = _VkCreateMacOSSurfaceMVK
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateMacOSSurfaceMVK
+        unwrapVkProcPtrUnsafe = unwrapVkCreateMacOSSurfaceMVKUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateMacOSSurfaceMVKSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Mathias Heyer @mheyer@
+        -- contact: @Mathias Heyer gitlab:@mheyer@
         --
         -- author: @NN@
         --
@@ -102,7 +103,8 @@
 
 type PFN_vkCreateViSurfaceNN = FunPtr HS_vkCreateViSurfaceNN
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateViSurfaceNN ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateViSurfaceNNUnsafe ::
                PFN_vkCreateViSurfaceNN -> HS_vkCreateViSurfaceNN
 
 foreign import ccall safe "dynamic" unwrapVkCreateViSurfaceNNSafe
@@ -113,9 +115,9 @@
         vkProcSymbol = _VkCreateViSurfaceNN
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateViSurfaceNN
+        unwrapVkProcPtrUnsafe = unwrapVkCreateViSurfaceNNUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateViSurfaceNNSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs b/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -142,8 +143,9 @@
 type PFN_vkCmdProcessCommandsNVX =
      FunPtr HS_vkCmdProcessCommandsNVX
 
-foreign import ccall unsafe "dynamic" unwrapVkCmdProcessCommandsNVX
-               :: PFN_vkCmdProcessCommandsNVX -> HS_vkCmdProcessCommandsNVX
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdProcessCommandsNVXUnsafe ::
+               PFN_vkCmdProcessCommandsNVX -> HS_vkCmdProcessCommandsNVX
 
 foreign import ccall safe "dynamic"
                unwrapVkCmdProcessCommandsNVXSafe ::
@@ -155,9 +157,9 @@
         vkProcSymbol = _VkCmdProcessCommandsNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdProcessCommandsNVX
+        unwrapVkProcPtrUnsafe = unwrapVkCmdProcessCommandsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdProcessCommandsNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -203,7 +205,7 @@
      FunPtr HS_vkCmdReserveSpaceForCommandsNVX
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdReserveSpaceForCommandsNVX ::
+               unwrapVkCmdReserveSpaceForCommandsNVXUnsafe ::
                PFN_vkCmdReserveSpaceForCommandsNVX ->
                  HS_vkCmdReserveSpaceForCommandsNVX
 
@@ -218,9 +220,9 @@
         vkProcSymbol = _VkCmdReserveSpaceForCommandsNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdReserveSpaceForCommandsNVX
+        unwrapVkProcPtrUnsafe = unwrapVkCmdReserveSpaceForCommandsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdReserveSpaceForCommandsNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -273,7 +275,7 @@
      FunPtr HS_vkCreateIndirectCommandsLayoutNVX
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCreateIndirectCommandsLayoutNVX ::
+               unwrapVkCreateIndirectCommandsLayoutNVXUnsafe ::
                PFN_vkCreateIndirectCommandsLayoutNVX ->
                  HS_vkCreateIndirectCommandsLayoutNVX
 
@@ -288,9 +290,10 @@
         vkProcSymbol = _VkCreateIndirectCommandsLayoutNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateIndirectCommandsLayoutNVX
+        unwrapVkProcPtrUnsafe
+          = unwrapVkCreateIndirectCommandsLayoutNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateIndirectCommandsLayoutNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -335,7 +338,7 @@
      FunPtr HS_vkDestroyIndirectCommandsLayoutNVX
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyIndirectCommandsLayoutNVX ::
+               unwrapVkDestroyIndirectCommandsLayoutNVXUnsafe ::
                PFN_vkDestroyIndirectCommandsLayoutNVX ->
                  HS_vkDestroyIndirectCommandsLayoutNVX
 
@@ -350,9 +353,10 @@
         vkProcSymbol = _VkDestroyIndirectCommandsLayoutNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyIndirectCommandsLayoutNVX
+        unwrapVkProcPtrUnsafe
+          = unwrapVkDestroyIndirectCommandsLayoutNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroyIndirectCommandsLayoutNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -399,8 +403,9 @@
 
 type PFN_vkCreateObjectTableNVX = FunPtr HS_vkCreateObjectTableNVX
 
-foreign import ccall unsafe "dynamic" unwrapVkCreateObjectTableNVX
-               :: PFN_vkCreateObjectTableNVX -> HS_vkCreateObjectTableNVX
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateObjectTableNVXUnsafe ::
+               PFN_vkCreateObjectTableNVX -> HS_vkCreateObjectTableNVX
 
 foreign import ccall safe "dynamic"
                unwrapVkCreateObjectTableNVXSafe ::
@@ -412,9 +417,9 @@
         vkProcSymbol = _VkCreateObjectTableNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateObjectTableNVX
+        unwrapVkProcPtrUnsafe = unwrapVkCreateObjectTableNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCreateObjectTableNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -454,8 +459,9 @@
 type PFN_vkDestroyObjectTableNVX =
      FunPtr HS_vkDestroyObjectTableNVX
 
-foreign import ccall unsafe "dynamic" unwrapVkDestroyObjectTableNVX
-               :: PFN_vkDestroyObjectTableNVX -> HS_vkDestroyObjectTableNVX
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyObjectTableNVXUnsafe ::
+               PFN_vkDestroyObjectTableNVX -> HS_vkDestroyObjectTableNVX
 
 foreign import ccall safe "dynamic"
                unwrapVkDestroyObjectTableNVXSafe ::
@@ -467,9 +473,9 @@
         vkProcSymbol = _VkDestroyObjectTableNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyObjectTableNVX
+        unwrapVkProcPtrUnsafe = unwrapVkDestroyObjectTableNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkDestroyObjectTableNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -518,7 +524,8 @@
 
 type PFN_vkRegisterObjectsNVX = FunPtr HS_vkRegisterObjectsNVX
 
-foreign import ccall unsafe "dynamic" unwrapVkRegisterObjectsNVX ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkRegisterObjectsNVXUnsafe ::
                PFN_vkRegisterObjectsNVX -> HS_vkRegisterObjectsNVX
 
 foreign import ccall safe "dynamic" unwrapVkRegisterObjectsNVXSafe
@@ -529,9 +536,9 @@
         vkProcSymbol = _VkRegisterObjectsNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkRegisterObjectsNVX
+        unwrapVkProcPtrUnsafe = unwrapVkRegisterObjectsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkRegisterObjectsNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -580,8 +587,9 @@
 
 type PFN_vkUnregisterObjectsNVX = FunPtr HS_vkUnregisterObjectsNVX
 
-foreign import ccall unsafe "dynamic" unwrapVkUnregisterObjectsNVX
-               :: PFN_vkUnregisterObjectsNVX -> HS_vkUnregisterObjectsNVX
+foreign import ccall unsafe "dynamic"
+               unwrapVkUnregisterObjectsNVXUnsafe ::
+               PFN_vkUnregisterObjectsNVX -> HS_vkUnregisterObjectsNVX
 
 foreign import ccall safe "dynamic"
                unwrapVkUnregisterObjectsNVXSafe ::
@@ -593,9 +601,9 @@
         vkProcSymbol = _VkUnregisterObjectsNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUnregisterObjectsNVX
+        unwrapVkProcPtrUnsafe = unwrapVkUnregisterObjectsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkUnregisterObjectsNVXSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
@@ -644,7 +652,7 @@
      FunPtr HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ::
+               unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXUnsafe ::
                PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ->
                  HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
@@ -661,10 +669,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs b/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NVX@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
@@ -1,5 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -14,7 +15,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Eric Werness @ewerness@
+        -- contact: @Eric Werness @ewerness-nv@
         --
         -- author: @NV@
         --
@@ -97,7 +98,7 @@
      FunPtr HS_vkCmdSetViewportWScalingNV
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetViewportWScalingNV ::
+               unwrapVkCmdSetViewportWScalingNVUnsafe ::
                PFN_vkCmdSetViewportWScalingNV -> HS_vkCmdSetViewportWScalingNV
 
 foreign import ccall safe "dynamic"
@@ -110,9 +111,9 @@
         vkProcSymbol = _VkCmdSetViewportWScalingNV
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetViewportWScalingNV
+        unwrapVkProcPtrUnsafe = unwrapVkCmdSetViewportWScalingNVUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkCmdSetViewportWScalingNVSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -121,7 +122,7 @@
      FunPtr HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNV ::
+               unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVUnsafe ::
                PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ->
                  HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
@@ -139,10 +140,10 @@
         vkProcSymbol = _VkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNV
+        unwrapVkProcPtrUnsafe
+          = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe
           = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
@@ -1,6 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE CPP                      #-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE FlexibleInstances        #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -103,7 +104,7 @@
      FunPtr HS_vkGetMemoryWin32HandleNV
 
 foreign import ccall unsafe "dynamic"
-               unwrapVkGetMemoryWin32HandleNV ::
+               unwrapVkGetMemoryWin32HandleNVUnsafe ::
                PFN_vkGetMemoryWin32HandleNV -> HS_vkGetMemoryWin32HandleNV
 
 foreign import ccall safe "dynamic"
@@ -116,9 +117,9 @@
         vkProcSymbol = _VkGetMemoryWin32HandleNV
 
         {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetMemoryWin32HandleNV
+        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryWin32HandleNVUnsafe
 
-        {-# INLINE unwrapVkProcPtr #-}
+        {-# INLINE unwrapVkProcPtrUnsafe #-}
         unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleNVSafe
 
         {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Jeff Bolz @jbolz@
+        -- contact: @Jeff Bolz @jeffbolznv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Piers Daniell @pdaniell@
+        -- contact: @Piers Daniell @pdaniell-nv@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs
@@ -10,7 +10,7 @@
         --
         -- supported: @vulkan@
         --
-        -- contact: @Carsten Rohde@
+        -- contact: @Carsten Rohde @crohde@
         --
         -- author: @NV@
         --
diff --git a/src-gen/Graphics/Vulkan/Types/Defines.hs b/src-gen/Graphics/Vulkan/Types/Defines.hs
--- a/src-gen/Graphics/Vulkan/Types/Defines.hs
+++ b/src-gen/Graphics/Vulkan/Types/Defines.hs
@@ -57,12 +57,12 @@
 type VK_API_VERSION_1_1 = 4198400
 
 -- | > // Version of this file
---   > #define VK_HEADER_VERSION 74
+--   > #define VK_HEADER_VERSION 77
 pattern VK_HEADER_VERSION :: (Num a, Eq a) => a
 
-pattern VK_HEADER_VERSION = 74
+pattern VK_HEADER_VERSION = 77
 
-type VK_HEADER_VERSION = 74
+type VK_HEADER_VERSION = 77
 
 -- | > #define VK_MAKE_VERSION(major, minor, patch) \
 --   >     (((major) << 22) | ((minor) << 12) | (patch))
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc
@@ -0,0 +1,265 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Base
+       (VkBaseInStructure(..), VkBaseOutStructure(..)) where
+import           Foreign.Storable                         (Storable (..))
+import           GHC.Base                                 (Addr##, ByteArray##,
+                                                           byteArrayContents##,
+                                                           plusAddr##)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import           System.IO.Unsafe                         (unsafeDupablePerformIO)
+
+-- | > typedef struct VkBaseInStructure {
+--   >     VkStructureType sType;
+--   >     const struct VkBaseInStructure* pNext;
+--   > } VkBaseInStructure;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBaseInStructure VkBaseInStructure registry at www.khronos.org>
+data VkBaseInStructure = VkBaseInStructure## Addr## ByteArray##
+
+instance Eq VkBaseInStructure where
+        (VkBaseInStructure## a _) == x@(VkBaseInStructure## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBaseInStructure where
+        (VkBaseInStructure## a _) `compare` x@(VkBaseInStructure## b _)
+          = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkBaseInStructure where
+        sizeOf ~_ = #{size VkBaseInStructure}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_ = #{alignment VkBaseInStructure}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkBaseInStructure where
+        unsafeAddr (VkBaseInStructure## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBaseInStructure## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBaseInStructure## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkBaseInStructure where
+        type StructFields VkBaseInStructure = '["sType", "pNext"] -- ' closing tick for hsc2hs
+        type CUnionType VkBaseInStructure = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkBaseInStructure = 'False -- ' closing tick for hsc2hs
+        type StructExtends VkBaseInStructure = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-} HasField "sType" VkBaseInStructure
+         where
+        type FieldType "sType" VkBaseInStructure = VkStructureType
+        type FieldOptional "sType" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkBaseInStructure =
+             #{offset VkBaseInStructure, sType}
+        type FieldIsArray "sType" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkBaseInStructure, sType}
+
+instance {-# OVERLAPPING #-} CanReadField "sType" VkBaseInStructure
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBaseInStructure, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBaseInStructure, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkBaseInStructure where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBaseInStructure, sType}
+
+instance {-# OVERLAPPING #-} HasField "pNext" VkBaseInStructure
+         where
+        type FieldType "pNext" VkBaseInStructure = Ptr VkBaseInStructure
+        type FieldOptional "pNext" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkBaseInStructure =
+             #{offset VkBaseInStructure, pNext}
+        type FieldIsArray "pNext" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkBaseInStructure, pNext}
+
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkBaseInStructure
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBaseInStructure, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBaseInStructure, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkBaseInStructure where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBaseInStructure, pNext}
+
+instance Show VkBaseInStructure where
+        showsPrec d x
+          = showString "VkBaseInStructure {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) . showChar '}'
+
+-- | > typedef struct VkBaseOutStructure {
+--   >     VkStructureType sType;
+--   >     struct VkBaseOutStructure* pNext;
+--   > } VkBaseOutStructure;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBaseOutStructure VkBaseOutStructure registry at www.khronos.org>
+data VkBaseOutStructure = VkBaseOutStructure## Addr## ByteArray##
+
+instance Eq VkBaseOutStructure where
+        (VkBaseOutStructure## a _) == x@(VkBaseOutStructure## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBaseOutStructure where
+        (VkBaseOutStructure## a _) `compare` x@(VkBaseOutStructure## b _)
+          = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkBaseOutStructure where
+        sizeOf ~_ = #{size VkBaseOutStructure}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_ = #{alignment VkBaseOutStructure}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkBaseOutStructure where
+        unsafeAddr (VkBaseOutStructure## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBaseOutStructure## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBaseOutStructure## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkBaseOutStructure where
+        type StructFields VkBaseOutStructure = '["sType", "pNext"] -- ' closing tick for hsc2hs
+        type CUnionType VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
+        type StructExtends VkBaseOutStructure = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-} HasField "sType" VkBaseOutStructure
+         where
+        type FieldType "sType" VkBaseOutStructure = VkStructureType
+        type FieldOptional "sType" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkBaseOutStructure =
+             #{offset VkBaseOutStructure, sType}
+        type FieldIsArray "sType" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkBaseOutStructure, sType}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkBaseOutStructure where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBaseOutStructure, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBaseOutStructure, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkBaseOutStructure where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBaseOutStructure, sType}
+
+instance {-# OVERLAPPING #-} HasField "pNext" VkBaseOutStructure
+         where
+        type FieldType "pNext" VkBaseOutStructure = Ptr VkBaseOutStructure
+        type FieldOptional "pNext" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkBaseOutStructure =
+             #{offset VkBaseOutStructure, pNext}
+        type FieldIsArray "pNext" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkBaseOutStructure, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkBaseOutStructure where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBaseOutStructure, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBaseOutStructure, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkBaseOutStructure where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBaseOutStructure, pNext}
+
+instance Show VkBaseOutStructure where
+        showsPrec d x
+          = showString "VkBaseOutStructure {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc
@@ -9,10 +9,13 @@
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Display
        (VkDisplayEventInfoEXT(..), VkDisplayModeCreateInfoKHR(..),
-        VkDisplayModeParametersKHR(..), VkDisplayModePropertiesKHR(..),
-        VkDisplayPlaneCapabilitiesKHR(..), VkDisplayPlanePropertiesKHR(..),
+        VkDisplayModeParametersKHR(..), VkDisplayModeProperties2KHR(..),
+        VkDisplayModePropertiesKHR(..), VkDisplayPlaneCapabilities2KHR(..),
+        VkDisplayPlaneCapabilitiesKHR(..), VkDisplayPlaneInfo2KHR(..),
+        VkDisplayPlaneProperties2KHR(..), VkDisplayPlanePropertiesKHR(..),
         VkDisplayPowerInfoEXT(..), VkDisplayPresentInfoKHR(..),
-        VkDisplayPropertiesKHR(..), VkDisplaySurfaceCreateInfoKHR(..))
+        VkDisplayProperties2KHR(..), VkDisplayPropertiesKHR(..),
+        VkDisplaySurfaceCreateInfoKHR(..))
        where
 import           Foreign.Storable                         (Storable (..))
 import           GHC.Base                                 (Addr##, ByteArray##,
@@ -538,6 +541,182 @@
                     showString "refreshRate = " .
                       showsPrec d (getField @"refreshRate" x) . showChar '}'
 
+-- | > typedef struct VkDisplayModeProperties2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayModePropertiesKHR displayModeProperties;
+--   > } VkDisplayModeProperties2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeProperties2KHR VkDisplayModeProperties2KHR registry at www.khronos.org>
+data VkDisplayModeProperties2KHR = VkDisplayModeProperties2KHR## Addr##
+                                                                ByteArray##
+
+instance Eq VkDisplayModeProperties2KHR where
+        (VkDisplayModeProperties2KHR## a _) ==
+          x@(VkDisplayModeProperties2KHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDisplayModeProperties2KHR where
+        (VkDisplayModeProperties2KHR## a _) `compare`
+          x@(VkDisplayModeProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkDisplayModeProperties2KHR where
+        sizeOf ~_ = #{size VkDisplayModeProperties2KHR}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_ = #{alignment VkDisplayModeProperties2KHR}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkDisplayModeProperties2KHR where
+        unsafeAddr (VkDisplayModeProperties2KHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDisplayModeProperties2KHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDisplayModeProperties2KHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkDisplayModeProperties2KHR where
+        type StructFields VkDisplayModeProperties2KHR =
+             '["sType", "pNext", "displayModeProperties"] -- ' closing tick for hsc2hs
+        type CUnionType VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkDisplayModeProperties2KHR = 'True -- ' closing tick for hsc2hs
+        type StructExtends VkDisplayModeProperties2KHR = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         HasField "sType" VkDisplayModeProperties2KHR where
+        type FieldType "sType" VkDisplayModeProperties2KHR =
+             VkStructureType
+        type FieldOptional "sType" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkDisplayModeProperties2KHR =
+             #{offset VkDisplayModeProperties2KHR, sType}
+        type FieldIsArray "sType" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayModeProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayModeProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeProperties2KHR, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayModeProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayModeProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         HasField "pNext" VkDisplayModeProperties2KHR where
+        type FieldType "pNext" VkDisplayModeProperties2KHR = Ptr Void
+        type FieldOptional "pNext" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkDisplayModeProperties2KHR =
+             #{offset VkDisplayModeProperties2KHR, pNext}
+        type FieldIsArray "pNext" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayModeProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayModeProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeProperties2KHR, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayModeProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayModeProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         HasField "displayModeProperties" VkDisplayModeProperties2KHR where
+        type FieldType "displayModeProperties" VkDisplayModeProperties2KHR
+             = VkDisplayModePropertiesKHR
+        type FieldOptional "displayModeProperties"
+               VkDisplayModeProperties2KHR
+             = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "displayModeProperties"
+               VkDisplayModeProperties2KHR
+             =
+             #{offset VkDisplayModeProperties2KHR, displayModeProperties}
+        type FieldIsArray "displayModeProperties"
+               VkDisplayModeProperties2KHR
+             = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayModeProperties2KHR, displayModeProperties}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "displayModeProperties" VkDisplayModeProperties2KHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeProperties2KHR, displayModeProperties})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayModeProperties2KHR, displayModeProperties}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayModeProperties" VkDisplayModeProperties2KHR
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeProperties2KHR, displayModeProperties}
+
+instance Show VkDisplayModeProperties2KHR where
+        showsPrec d x
+          = showString "VkDisplayModeProperties2KHR {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
+                        showString ", " .
+                          showString "displayModeProperties = " .
+                            showsPrec d (getField @"displayModeProperties" x) . showChar '}'
+
 -- | > typedef struct VkDisplayModePropertiesKHR {
 --   >     VkDisplayModeKHR                 displayMode;
 --   >     VkDisplayModeParametersKHR       parameters;
@@ -671,6 +850,177 @@
                     showString "parameters = " .
                       showsPrec d (getField @"parameters" x) . showChar '}'
 
+-- | > typedef struct VkDisplayPlaneCapabilities2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayPlaneCapabilitiesKHR capabilities;
+--   > } VkDisplayPlaneCapabilities2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneCapabilities2KHR VkDisplayPlaneCapabilities2KHR registry at www.khronos.org>
+data VkDisplayPlaneCapabilities2KHR = VkDisplayPlaneCapabilities2KHR## Addr##
+                                                                      ByteArray##
+
+instance Eq VkDisplayPlaneCapabilities2KHR where
+        (VkDisplayPlaneCapabilities2KHR## a _) ==
+          x@(VkDisplayPlaneCapabilities2KHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDisplayPlaneCapabilities2KHR where
+        (VkDisplayPlaneCapabilities2KHR## a _) `compare`
+          x@(VkDisplayPlaneCapabilities2KHR## b _) = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkDisplayPlaneCapabilities2KHR where
+        sizeOf ~_ = #{size VkDisplayPlaneCapabilities2KHR}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_
+          = #{alignment VkDisplayPlaneCapabilities2KHR}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkDisplayPlaneCapabilities2KHR where
+        unsafeAddr (VkDisplayPlaneCapabilities2KHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDisplayPlaneCapabilities2KHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDisplayPlaneCapabilities2KHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkDisplayPlaneCapabilities2KHR where
+        type StructFields VkDisplayPlaneCapabilities2KHR =
+             '["sType", "pNext", "capabilities"] -- ' closing tick for hsc2hs
+        type CUnionType VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkDisplayPlaneCapabilities2KHR = 'True -- ' closing tick for hsc2hs
+        type StructExtends VkDisplayPlaneCapabilities2KHR = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         HasField "sType" VkDisplayPlaneCapabilities2KHR where
+        type FieldType "sType" VkDisplayPlaneCapabilities2KHR =
+             VkStructureType
+        type FieldOptional "sType" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkDisplayPlaneCapabilities2KHR =
+             #{offset VkDisplayPlaneCapabilities2KHR, sType}
+        type FieldIsArray "sType" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneCapabilities2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayPlaneCapabilities2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilities2KHR, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilities2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayPlaneCapabilities2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilities2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         HasField "pNext" VkDisplayPlaneCapabilities2KHR where
+        type FieldType "pNext" VkDisplayPlaneCapabilities2KHR = Ptr Void
+        type FieldOptional "pNext" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkDisplayPlaneCapabilities2KHR =
+             #{offset VkDisplayPlaneCapabilities2KHR, pNext}
+        type FieldIsArray "pNext" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneCapabilities2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayPlaneCapabilities2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilities2KHR, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilities2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayPlaneCapabilities2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilities2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         HasField "capabilities" VkDisplayPlaneCapabilities2KHR where
+        type FieldType "capabilities" VkDisplayPlaneCapabilities2KHR =
+             VkDisplayPlaneCapabilitiesKHR
+        type FieldOptional "capabilities" VkDisplayPlaneCapabilities2KHR =
+             'False -- ' closing tick for hsc2hs
+        type FieldOffset "capabilities" VkDisplayPlaneCapabilities2KHR =
+             #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
+        type FieldIsArray "capabilities" VkDisplayPlaneCapabilities2KHR =
+             'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "capabilities" VkDisplayPlaneCapabilities2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilities2KHR, capabilities})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "capabilities" VkDisplayPlaneCapabilities2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
+
+instance Show VkDisplayPlaneCapabilities2KHR where
+        showsPrec d x
+          = showString "VkDisplayPlaneCapabilities2KHR {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
+                        showString ", " .
+                          showString "capabilities = " .
+                            showsPrec d (getField @"capabilities" x) . showChar '}'
+
 -- | > typedef struct VkDisplayPlaneCapabilitiesKHR {
 --   >     VkDisplayPlaneAlphaFlagsKHR      supportedAlpha;
 --   >     VkOffset2D                       minSrcPosition;
@@ -1085,6 +1435,381 @@
                                                                   (getField @"maxDstExtent" x)
                                                                   . showChar '}'
 
+-- | > typedef struct VkDisplayPlaneInfo2KHR {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkDisplayModeKHR mode;
+--   >     uint32_t planeIndex;
+--   > } VkDisplayPlaneInfo2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneInfo2KHR VkDisplayPlaneInfo2KHR registry at www.khronos.org>
+data VkDisplayPlaneInfo2KHR = VkDisplayPlaneInfo2KHR## Addr##
+                                                      ByteArray##
+
+instance Eq VkDisplayPlaneInfo2KHR where
+        (VkDisplayPlaneInfo2KHR## a _) == x@(VkDisplayPlaneInfo2KHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDisplayPlaneInfo2KHR where
+        (VkDisplayPlaneInfo2KHR## a _) `compare`
+          x@(VkDisplayPlaneInfo2KHR## b _) = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkDisplayPlaneInfo2KHR where
+        sizeOf ~_ = #{size VkDisplayPlaneInfo2KHR}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_ = #{alignment VkDisplayPlaneInfo2KHR}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkDisplayPlaneInfo2KHR where
+        unsafeAddr (VkDisplayPlaneInfo2KHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDisplayPlaneInfo2KHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDisplayPlaneInfo2KHR## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkDisplayPlaneInfo2KHR where
+        type StructFields VkDisplayPlaneInfo2KHR =
+             '["sType", "pNext", "mode", "planeIndex"] -- ' closing tick for hsc2hs
+        type CUnionType VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+        type StructExtends VkDisplayPlaneInfo2KHR = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         HasField "sType" VkDisplayPlaneInfo2KHR where
+        type FieldType "sType" VkDisplayPlaneInfo2KHR = VkStructureType
+        type FieldOptional "sType" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkDisplayPlaneInfo2KHR =
+             #{offset VkDisplayPlaneInfo2KHR, sType}
+        type FieldIsArray "sType" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkDisplayPlaneInfo2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayPlaneInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayPlaneInfo2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         HasField "pNext" VkDisplayPlaneInfo2KHR where
+        type FieldType "pNext" VkDisplayPlaneInfo2KHR = Ptr Void
+        type FieldOptional "pNext" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkDisplayPlaneInfo2KHR =
+             #{offset VkDisplayPlaneInfo2KHR, pNext}
+        type FieldIsArray "pNext" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkDisplayPlaneInfo2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayPlaneInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayPlaneInfo2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, pNext}
+
+instance {-# OVERLAPPING #-} HasField "mode" VkDisplayPlaneInfo2KHR
+         where
+        type FieldType "mode" VkDisplayPlaneInfo2KHR = VkDisplayModeKHR
+        type FieldOptional "mode" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "mode" VkDisplayPlaneInfo2KHR =
+             #{offset VkDisplayPlaneInfo2KHR, mode}
+        type FieldIsArray "mode" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkDisplayPlaneInfo2KHR, mode}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "mode" VkDisplayPlaneInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, mode})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, mode}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "mode" VkDisplayPlaneInfo2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, mode}
+
+instance {-# OVERLAPPING #-}
+         HasField "planeIndex" VkDisplayPlaneInfo2KHR where
+        type FieldType "planeIndex" VkDisplayPlaneInfo2KHR = Word32
+        type FieldOptional "planeIndex" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "planeIndex" VkDisplayPlaneInfo2KHR =
+             #{offset VkDisplayPlaneInfo2KHR, planeIndex}
+        type FieldIsArray "planeIndex" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneInfo2KHR, planeIndex}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "planeIndex" VkDisplayPlaneInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, planeIndex})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, planeIndex}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "planeIndex" VkDisplayPlaneInfo2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, planeIndex}
+
+instance Show VkDisplayPlaneInfo2KHR where
+        showsPrec d x
+          = showString "VkDisplayPlaneInfo2KHR {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
+                        showString ", " .
+                          showString "mode = " .
+                            showsPrec d (getField @"mode" x) .
+                              showString ", " .
+                                showString "planeIndex = " .
+                                  showsPrec d (getField @"planeIndex" x) . showChar '}'
+
+-- | > typedef struct VkDisplayPlaneProperties2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayPlanePropertiesKHR displayPlaneProperties;
+--   > } VkDisplayPlaneProperties2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneProperties2KHR VkDisplayPlaneProperties2KHR registry at www.khronos.org>
+data VkDisplayPlaneProperties2KHR = VkDisplayPlaneProperties2KHR## Addr##
+                                                                  ByteArray##
+
+instance Eq VkDisplayPlaneProperties2KHR where
+        (VkDisplayPlaneProperties2KHR## a _) ==
+          x@(VkDisplayPlaneProperties2KHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDisplayPlaneProperties2KHR where
+        (VkDisplayPlaneProperties2KHR## a _) `compare`
+          x@(VkDisplayPlaneProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkDisplayPlaneProperties2KHR where
+        sizeOf ~_ = #{size VkDisplayPlaneProperties2KHR}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_
+          = #{alignment VkDisplayPlaneProperties2KHR}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkDisplayPlaneProperties2KHR where
+        unsafeAddr (VkDisplayPlaneProperties2KHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDisplayPlaneProperties2KHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDisplayPlaneProperties2KHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkDisplayPlaneProperties2KHR where
+        type StructFields VkDisplayPlaneProperties2KHR =
+             '["sType", "pNext", "displayPlaneProperties"] -- ' closing tick for hsc2hs
+        type CUnionType VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkDisplayPlaneProperties2KHR = 'True -- ' closing tick for hsc2hs
+        type StructExtends VkDisplayPlaneProperties2KHR = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         HasField "sType" VkDisplayPlaneProperties2KHR where
+        type FieldType "sType" VkDisplayPlaneProperties2KHR =
+             VkStructureType
+        type FieldOptional "sType" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkDisplayPlaneProperties2KHR =
+             #{offset VkDisplayPlaneProperties2KHR, sType}
+        type FieldIsArray "sType" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayPlaneProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneProperties2KHR, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayPlaneProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         HasField "pNext" VkDisplayPlaneProperties2KHR where
+        type FieldType "pNext" VkDisplayPlaneProperties2KHR = Ptr Void
+        type FieldOptional "pNext" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkDisplayPlaneProperties2KHR =
+             #{offset VkDisplayPlaneProperties2KHR, pNext}
+        type FieldIsArray "pNext" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayPlaneProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneProperties2KHR, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayPlaneProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         HasField "displayPlaneProperties" VkDisplayPlaneProperties2KHR
+         where
+        type FieldType "displayPlaneProperties"
+               VkDisplayPlaneProperties2KHR
+             = VkDisplayPlanePropertiesKHR
+        type FieldOptional "displayPlaneProperties"
+               VkDisplayPlaneProperties2KHR
+             = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "displayPlaneProperties"
+               VkDisplayPlaneProperties2KHR
+             =
+             #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
+        type FieldIsArray "displayPlaneProperties"
+               VkDisplayPlaneProperties2KHR
+             = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "displayPlaneProperties" VkDisplayPlaneProperties2KHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayPlaneProperties" VkDisplayPlaneProperties2KHR
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
+
+instance Show VkDisplayPlaneProperties2KHR where
+        showsPrec d x
+          = showString "VkDisplayPlaneProperties2KHR {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
+                        showString ", " .
+                          showString "displayPlaneProperties = " .
+                            showsPrec d (getField @"displayPlaneProperties" x) . showChar '}'
+
 -- | > typedef struct VkDisplayPlanePropertiesKHR {
 --   >     VkDisplayKHR                     currentDisplay;
 --   >     uint32_t                         currentStackIndex;
@@ -1615,6 +2340,170 @@
                                     showString ", " .
                                       showString "persistent = " .
                                         showsPrec d (getField @"persistent" x) . showChar '}'
+
+-- | > typedef struct VkDisplayProperties2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayPropertiesKHR displayProperties;
+--   > } VkDisplayProperties2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayProperties2KHR VkDisplayProperties2KHR registry at www.khronos.org>
+data VkDisplayProperties2KHR = VkDisplayProperties2KHR## Addr##
+                                                        ByteArray##
+
+instance Eq VkDisplayProperties2KHR where
+        (VkDisplayProperties2KHR## a _) == x@(VkDisplayProperties2KHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDisplayProperties2KHR where
+        (VkDisplayProperties2KHR## a _) `compare`
+          x@(VkDisplayProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
+
+        {-# INLINE compare #-}
+
+instance Storable VkDisplayProperties2KHR where
+        sizeOf ~_ = #{size VkDisplayProperties2KHR}
+
+        {-# INLINE sizeOf #-}
+        alignment ~_ = #{alignment VkDisplayProperties2KHR}
+
+        {-# INLINE alignment #-}
+        peek = peekVkData##
+
+        {-# INLINE peek #-}
+        poke = pokeVkData##
+
+        {-# INLINE poke #-}
+
+instance VulkanMarshalPrim VkDisplayProperties2KHR where
+        unsafeAddr (VkDisplayProperties2KHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDisplayProperties2KHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDisplayProperties2KHR## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+instance VulkanMarshal VkDisplayProperties2KHR where
+        type StructFields VkDisplayProperties2KHR =
+             '["sType", "pNext", "displayProperties"] -- ' closing tick for hsc2hs
+        type CUnionType VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type ReturnedOnly VkDisplayProperties2KHR = 'True -- ' closing tick for hsc2hs
+        type StructExtends VkDisplayProperties2KHR = '[] -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         HasField "sType" VkDisplayProperties2KHR where
+        type FieldType "sType" VkDisplayProperties2KHR = VkStructureType
+        type FieldOptional "sType" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "sType" VkDisplayProperties2KHR =
+             #{offset VkDisplayProperties2KHR, sType}
+        type FieldIsArray "sType" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkDisplayProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayProperties2KHR, sType})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayProperties2KHR, sType}
+
+instance {-# OVERLAPPING #-}
+         HasField "pNext" VkDisplayProperties2KHR where
+        type FieldType "pNext" VkDisplayProperties2KHR = Ptr Void
+        type FieldOptional "pNext" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
+        type FieldOffset "pNext" VkDisplayProperties2KHR =
+             #{offset VkDisplayProperties2KHR, pNext}
+        type FieldIsArray "pNext" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset = #{offset VkDisplayProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayProperties2KHR, pNext})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayProperties2KHR, pNext}
+
+instance {-# OVERLAPPING #-}
+         HasField "displayProperties" VkDisplayProperties2KHR where
+        type FieldType "displayProperties" VkDisplayProperties2KHR =
+             VkDisplayPropertiesKHR
+        type FieldOptional "displayProperties" VkDisplayProperties2KHR =
+             'False -- ' closing tick for hsc2hs
+        type FieldOffset "displayProperties" VkDisplayProperties2KHR =
+             #{offset VkDisplayProperties2KHR, displayProperties}
+        type FieldIsArray "displayProperties" VkDisplayProperties2KHR =
+             'False -- ' closing tick for hsc2hs
+
+        {-# INLINE fieldOptional #-}
+        fieldOptional = False
+
+        {-# INLINE fieldOffset #-}
+        fieldOffset
+          = #{offset VkDisplayProperties2KHR, displayProperties}
+
+instance {-# OVERLAPPING #-}
+         CanReadField "displayProperties" VkDisplayProperties2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayProperties2KHR, displayProperties})
+
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayProperties2KHR, displayProperties}
+
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayProperties" VkDisplayProperties2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayProperties2KHR, displayProperties}
+
+instance Show VkDisplayProperties2KHR where
+        showsPrec d x
+          = showString "VkDisplayProperties2KHR {" .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
+                  showString ", " .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
+                        showString ", " .
+                          showString "displayProperties = " .
+                            showsPrec d (getField @"displayProperties" x) . showChar '}'
 
 -- | > typedef struct VkDisplayPropertiesKHR {
 --   >     VkDisplayKHR                     display;
diff --git a/src/Graphics/Vulkan/Marshal/Proc.hs b/src/Graphics/Vulkan/Marshal/Proc.hs
--- a/src/Graphics/Vulkan/Marshal/Proc.hs
+++ b/src/Graphics/Vulkan/Marshal/Proc.hs
@@ -16,18 +16,18 @@
 --   page to see other reasons to load symbols manually.
 --
 --   All FFI functions are present in two variants:
---   @xxx@ and @xxxSafe@, the names stand for @foreign import unsafe xxx@
+--   @xxxUnsafe@ and @xxxSafe@, the names stand for @foreign import unsafe xxx@
 --   @foreign import safe xxx@ respectively.
 --   In particular, that does not mean that @vkGetXxxProcSafe@ function cannot fail;
 --   it does error if the symbol is not present in the implementation!
 module Graphics.Vulkan.Marshal.Proc
   ( VulkanProc (..)
-  , vkGetInstanceProc, vkGetInstanceProcSafe
-  , vkLookupInstanceProc, vkLookupInstanceProcSafe
-  , vkGetDeviceProc, vkGetDeviceProcSafe
-  , vkLookupDeviceProc, vkLookupDeviceProcSafe
-  , vkGetProc, vkGetProcSafe
-  , vkLookupProc, vkLookupProcSafe
+  , vkGetInstanceProc, vkGetInstanceProcUnsafe, vkGetInstanceProcSafe
+  , vkLookupInstanceProc, vkLookupInstanceProcUnsafe, vkLookupInstanceProcSafe
+  , vkGetDeviceProc, vkGetDeviceProcUnsafe, vkGetDeviceProcSafe
+  , vkLookupDeviceProc, vkLookupDeviceProcUnsafe, vkLookupDeviceProcSafe
+  , vkGetProc, vkGetProcUnsafe, vkGetProcSafe
+  , vkLookupProc, vkLookupProcUnsafe, vkLookupProcSafe
     -- * Re-export `Foreign.Ptr`
   , FunPtr, nullFunPtr
   ) where
@@ -65,7 +65,7 @@
     vkProcSymbol :: CString
     -- | Convert C function pointer to an ordinary haskell function.
     --   Use unsafe FFI (@foreign import unsafe "dynamic" ...@).
-    unwrapVkProcPtr :: FunPtr (VkProcType proc) -> VkProcType proc
+    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType proc) -> VkProcType proc
     -- | Convert C function pointer to an ordinary haskell function.
     --   Use safe FFI (@foreign import safe "dynamic" ...@).
     unwrapVkProcPtrSafe :: FunPtr (VkProcType proc) -> VkProcType proc
@@ -86,22 +86,22 @@
 --   Note, this is an unsafe function;
 --   it does not check if the result of @vkGetInstanceProcAddr@
 --   is a null function pointer.
-vkGetInstanceProc :: forall proc . VulkanProc proc
-                  => VkInstance -> IO (VkProcType proc)
-vkGetInstanceProc i
-  = unwrapVkProcPtr @proc
-  <$> c'vkGetInstanceProcAddr i (vkProcSymbol @proc)
-{-# INLINE vkGetInstanceProc #-}
+vkGetInstanceProcUnsafe :: forall proc . VulkanProc proc
+                        => VkInstance -> IO (VkProcType proc)
+vkGetInstanceProcUnsafe i
+  = unwrapVkProcPtrUnsafe @proc
+  <$> c'vkGetInstanceProcAddrUnsafe i (vkProcSymbol @proc)
+{-# INLINE vkGetInstanceProcUnsafe #-}
 
 -- | An alternative to @vkGetInstanceProcAddr@ with type inference
 --   and protection against typos.
-vkLookupInstanceProc :: forall proc . VulkanProc proc
-                     => VkInstance -> IO (Maybe (VkProcType proc))
-vkLookupInstanceProc i
-    = f <$> c'vkGetInstanceProcAddr i (vkProcSymbol @proc)
+vkLookupInstanceProcUnsafe :: forall proc . VulkanProc proc
+                           => VkInstance -> IO (Maybe (VkProcType proc))
+vkLookupInstanceProcUnsafe i
+    = f <$> c'vkGetInstanceProcAddrUnsafe i (vkProcSymbol @proc)
   where
-    f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtr @proc p)
-{-# INLINE vkLookupInstanceProc #-}
+    f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtrUnsafe @proc p)
+{-# INLINE vkLookupInstanceProcUnsafe #-}
 
 
 -- | An alternative to @vkGetDeviceProcAddr@ with type inference
@@ -110,22 +110,22 @@
 --   Note, this is an unsafe function;
 --   it does not check if the result of @vkGetInstanceProcAddr@
 --   is a null function pointer.
-vkGetDeviceProc :: forall proc . VulkanProc proc
-                => VkDevice -> IO (VkProcType proc)
-vkGetDeviceProc i
-  = unwrapVkProcPtr @proc
-  <$> c'vkGetDeviceProcAddr i (vkProcSymbol @proc)
-{-# INLINE vkGetDeviceProc #-}
+vkGetDeviceProcUnsafe :: forall proc . VulkanProc proc
+                      => VkDevice -> IO (VkProcType proc)
+vkGetDeviceProcUnsafe i
+  = unwrapVkProcPtrUnsafe @proc
+  <$> c'vkGetDeviceProcAddrUnsafe i (vkProcSymbol @proc)
+{-# INLINE vkGetDeviceProcUnsafe #-}
 
 -- | An alternative to @vkGetDeviceProcAddr@ with type inference
 --   and protection against typos.
-vkLookupDeviceProc :: forall proc . VulkanProc proc
-                   => VkDevice -> IO (Maybe (VkProcType proc))
-vkLookupDeviceProc i
-    = f <$> c'vkGetDeviceProcAddr i (vkProcSymbol @proc)
+vkLookupDeviceProcUnsafe :: forall proc . VulkanProc proc
+                         => VkDevice -> IO (Maybe (VkProcType proc))
+vkLookupDeviceProcUnsafe i
+    = f <$> c'vkGetDeviceProcAddrUnsafe i (vkProcSymbol @proc)
   where
-    f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtr @proc p)
-{-# INLINE vkLookupDeviceProc #-}
+    f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtrUnsafe @proc p)
+{-# INLINE vkLookupDeviceProcUnsafe #-}
 
 
 -- | Locate Vulkan symbol dynamically at runtime using platform-dependent machinery,
@@ -137,14 +137,14 @@
 --   Also note, you are likely not able to lookup an extension funcion using
 --   `vkGetProc`, because a corresponding symbol is simply not present in the
 --   vulkan loader library.
-vkGetProc :: forall proc . VulkanProc proc => IO (VkProcType proc)
-vkGetProc = alloca $ \errPtr -> do
+vkGetProcUnsafe :: forall proc . VulkanProc proc => IO (VkProcType proc)
+vkGetProcUnsafe = alloca $ \errPtr -> do
     fp <- withForeignPtr _vkDlHandle $ \h ->
       c'vkdll_dlsym h (vkProcSymbol @proc) errPtr
     when (fp == nullFunPtr) $ peek errPtr >>= peekCString >>= fail .
         ("An error happened while trying to load vulkan symbol dynamically: " ++)
-    return $ unwrapVkProcPtr @proc fp
-{-# INLINE vkGetProc #-}
+    return $ unwrapVkProcPtrUnsafe @proc fp
+{-# INLINE vkGetProcUnsafe #-}
 
 -- | Locate Vulkan symbol dynamically at runtime using platform-dependent machinery,
 --   such as @dlsym@ or @GetProcAddress@.
@@ -155,12 +155,12 @@
 --   Also note, you are likely not able to lookup an extension funcion using
 --   `vkLookupProc`, because a corresponding symbol is simply not present in the
 --   vulkan loader library.
-vkLookupProc :: forall proc . VulkanProc proc => IO (Maybe (VkProcType proc))
-vkLookupProc = alloca $ \errPtr -> do
+vkLookupProcUnsafe :: forall proc . VulkanProc proc => IO (Maybe (VkProcType proc))
+vkLookupProcUnsafe = alloca $ \errPtr -> do
     fp <- withForeignPtr _vkDlHandle $ \h ->
       c'vkdll_dlsym h (vkProcSymbol @proc) errPtr
-    return $ if fp == nullFunPtr then Nothing else Just (unwrapVkProcPtr @proc fp)
-{-# INLINE vkLookupProc #-}
+    return $ if fp == nullFunPtr then Nothing else Just (unwrapVkProcPtrUnsafe @proc fp)
+{-# INLINE vkLookupProcUnsafe #-}
 
 
 
@@ -180,7 +180,7 @@
                   => VkInstance -> IO (VkProcType proc)
 vkGetInstanceProcSafe i
   = unwrapVkProcPtrSafe @proc
-  <$> c'vkGetInstanceProcAddr i (vkProcSymbol @proc)
+  <$> c'vkGetInstanceProcAddrSafe i (vkProcSymbol @proc)
 {-# INLINE vkGetInstanceProcSafe #-}
 
 -- | An alternative to @vkGetInstanceProcAddr@ with type inference
@@ -188,7 +188,7 @@
 vkLookupInstanceProcSafe :: forall proc . VulkanProc proc
                      => VkInstance -> IO (Maybe (VkProcType proc))
 vkLookupInstanceProcSafe i
-    = f <$> c'vkGetInstanceProcAddr i (vkProcSymbol @proc)
+    = f <$> c'vkGetInstanceProcAddrSafe i (vkProcSymbol @proc)
   where
     f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtrSafe @proc p)
 {-# INLINE vkLookupInstanceProcSafe #-}
@@ -204,7 +204,7 @@
                 => VkDevice -> IO (VkProcType proc)
 vkGetDeviceProcSafe i
   = unwrapVkProcPtrSafe @proc
-  <$> c'vkGetDeviceProcAddr i (vkProcSymbol @proc)
+  <$> c'vkGetDeviceProcAddrSafe i (vkProcSymbol @proc)
 {-# INLINE vkGetDeviceProcSafe #-}
 
 -- | An alternative to @vkGetDeviceProcAddr@ with type inference
@@ -212,7 +212,7 @@
 vkLookupDeviceProcSafe :: forall proc . VulkanProc proc
                    => VkDevice -> IO (Maybe (VkProcType proc))
 vkLookupDeviceProcSafe i
-    = f <$> c'vkGetDeviceProcAddr i (vkProcSymbol @proc)
+    = f <$> c'vkGetDeviceProcAddrSafe i (vkProcSymbol @proc)
   where
     f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtrSafe @proc p)
 {-# INLINE vkLookupDeviceProcSafe #-}
@@ -240,7 +240,7 @@
 --   such as @dlsym@ or @GetProcAddress@.
 --   This function returns @Nothing@ on failure ignoring an error message.
 --
---   Consider using `vkGetDeviceProc` or `vkGetInstanceProc` for loading a symbol,
+--   Consider using `vkLookupDeviceProc` or `vkLookupInstanceProc` for loading a symbol,
 --    because they can return a more optimized version of a function.
 --   Also note, you are likely not able to lookup an extension funcion using
 --   `vkLookupProc`, because a corresponding symbol is simply not present in the
@@ -254,7 +254,109 @@
 
 
 
+--------------------------------------------------------------------------------
+-- Default FFI version
+--------------------------------------------------------------------------------
 
+
+
+-- | An alternative to @vkGetInstanceProcAddr@ with type inference
+--   and protection against typos.
+--
+--   Note, this is an unsafe function;
+--   it does not check if the result of @vkGetInstanceProcAddr@
+--   is a null function pointer.
+vkGetInstanceProc :: forall proc . VulkanProc proc
+                  => VkInstance -> IO (VkProcType proc)
+vkGetInstanceProc =
+#ifdef UNSAFE_FFI_DEFAULT
+  vkGetInstanceProcUnsafe @proc
+#else
+  vkGetInstanceProcSafe @proc
+#endif
+{-# INLINE vkGetInstanceProc #-}
+
+-- | An alternative to @vkGetInstanceProcAddr@ with type inference
+--   and protection against typos.
+vkLookupInstanceProc :: forall proc . VulkanProc proc
+                     => VkInstance -> IO (Maybe (VkProcType proc))
+vkLookupInstanceProc =
+#ifdef UNSAFE_FFI_DEFAULT
+  vkLookupInstanceProcUnsafe @proc
+#else
+  vkLookupInstanceProcSafe @proc
+#endif
+{-# INLINE vkLookupInstanceProc #-}
+
+
+-- | An alternative to @vkGetDeviceProcAddr@ with type inference
+--   and protection against typos.
+--
+--   Note, this is an unsafe function;
+--   it does not check if the result of @vkGetInstanceProcAddr@
+--   is a null function pointer.
+vkGetDeviceProc :: forall proc . VulkanProc proc
+                => VkDevice -> IO (VkProcType proc)
+vkGetDeviceProc =
+#ifdef UNSAFE_FFI_DEFAULT
+  vkGetDeviceProcUnsafe @proc
+#else
+  vkGetDeviceProcSafe @proc
+#endif
+{-# INLINE vkGetDeviceProc #-}
+
+-- | An alternative to @vkGetDeviceProcAddr@ with type inference
+--   and protection against typos.
+vkLookupDeviceProc :: forall proc . VulkanProc proc
+                   => VkDevice -> IO (Maybe (VkProcType proc))
+vkLookupDeviceProc =
+#ifdef UNSAFE_FFI_DEFAULT
+  vkLookupDeviceProcUnsafe @proc
+#else
+  vkLookupDeviceProcSafe @proc
+#endif
+{-# INLINE vkLookupDeviceProc #-}
+
+
+-- | Locate Vulkan symbol dynamically at runtime using platform-dependent machinery,
+--   such as @dlsym@ or @GetProcAddress@.
+--   This function throws an error on failure.
+--
+--   Consider using `vkGetDeviceProc` or `vkGetInstanceProc` for loading a symbol,
+--    because they can return a more optimized version of a function.
+--   Also note, you are likely not able to lookup an extension funcion using
+--   `vkGetProc`, because a corresponding symbol is simply not present in the
+--   vulkan loader library.
+vkGetProc :: forall proc . VulkanProc proc => IO (VkProcType proc)
+vkGetProc =
+#ifdef UNSAFE_FFI_DEFAULT
+  vkGetProcUnsafe @proc
+#else
+  vkGetProcSafe @proc
+#endif
+{-# INLINE vkGetProc #-}
+
+-- | Locate Vulkan symbol dynamically at runtime using platform-dependent machinery,
+--   such as @dlsym@ or @GetProcAddress@.
+--   This function returns @Nothing@ on failure ignoring an error message.
+--
+--   Consider using `vkGetDeviceProc` or `vkGetInstanceProc` for loading a symbol,
+--    because they can return a more optimized version of a function.
+--   Also note, you are likely not able to lookup an extension funcion using
+--   `vkLookupProc`, because a corresponding symbol is simply not present in the
+--   vulkan loader library.
+vkLookupProc :: forall proc . VulkanProc proc => IO (Maybe (VkProcType proc))
+vkLookupProc =
+#ifdef UNSAFE_FFI_DEFAULT
+  vkLookupProcUnsafe @proc
+#else
+  vkLookupProcSafe @proc
+#endif
+{-# INLINE vkLookupProc #-}
+
+
+
+
 --------------------------------------------------------------------------------
 -- Utilities
 --------------------------------------------------------------------------------
@@ -264,40 +366,77 @@
 
 #ifdef VK_NO_PROTOTYPES
 
-c'vkGetInstanceProcAddr :: VkInstance -> CString -> IO (FunPtr a)
-c'vkGetInstanceProcAddr = unsafePerformIO $ alloca $ \errPtr -> do
+c'vkGetInstanceProcAddrSafe :: VkInstance -> CString -> IO (FunPtr a)
+c'vkGetInstanceProcAddrSafe = c'vkGetInstanceProcAddr' unwrap'vkGetInstanceProcAddrSafe
+
+c'vkGetInstanceProcAddrUnsafe :: VkInstance -> CString -> IO (FunPtr a)
+c'vkGetInstanceProcAddrUnsafe = c'vkGetInstanceProcAddr' unwrap'vkGetInstanceProcAddrUnsafe
+
+c'vkGetDeviceProcAddrSafe :: VkDevice -> CString -> IO (FunPtr a)
+c'vkGetDeviceProcAddrSafe = c'vkGetDeviceProcAddr' unwrap'vkGetDeviceProcAddrSafe
+
+c'vkGetDeviceProcAddrUnsafe :: VkDevice -> CString -> IO (FunPtr a)
+c'vkGetDeviceProcAddrUnsafe = c'vkGetDeviceProcAddr' unwrap'vkGetDeviceProcAddrUnsafe
+
+c'vkGetInstanceProcAddr'
+    :: ( FunPtr (VkInstance -> CString -> IO (FunPtr a))
+          -> VkInstance -> CString -> IO (FunPtr a)
+       )
+    -> VkInstance -> CString -> IO (FunPtr a)
+c'vkGetInstanceProcAddr' k = unsafePerformIO $ alloca $ \errPtr -> do
     fp <- withForeignPtr _vkDlHandle $ \h ->
       c'vkdll_dlsym h (Ptr "vkGetInstanceProcAddr"#) errPtr
     when (fp == nullFunPtr) $
       peek errPtr >>= peekCString >>= fail .
         ("Could not load 'vkGetInstanceProcAddr' C function from vulkan library dynamically: " ++)
-    return $ unwrap'vkGetInstanceProcAddr fp
+    return $ k fp
 
-c'vkGetDeviceProcAddr :: VkDevice -> CString -> IO (FunPtr a)
-c'vkGetDeviceProcAddr = unsafePerformIO $ alloca $ \errPtr -> do
+c'vkGetDeviceProcAddr'
+    :: ( FunPtr (VkDevice -> CString -> IO (FunPtr a))
+          -> VkDevice -> CString -> IO (FunPtr a)
+       )
+    -> VkDevice -> CString -> IO (FunPtr a)
+c'vkGetDeviceProcAddr' k = unsafePerformIO $ alloca $ \errPtr -> do
     fp <- withForeignPtr _vkDlHandle $ \h ->
       c'vkdll_dlsym h (Ptr "vkGetDeviceProcAddr"#) errPtr
     when (fp == nullFunPtr) $ peek errPtr >>= peekCString >>= fail .
         ("Could not load 'vkGetDeviceProcAddr' C function from vulkan library dynamically: " ++)
-    return $ unwrap'vkGetDeviceProcAddr fp
+    return $ k fp
 
+foreign import ccall safe "dynamic"
+  unwrap'vkGetInstanceProcAddrSafe
+    :: FunPtr (VkInstance -> CString -> IO (FunPtr a))
+    -> VkInstance -> CString -> IO (FunPtr a)
+
+foreign import ccall safe "dynamic"
+  unwrap'vkGetDeviceProcAddrSafe
+    :: FunPtr (VkDevice -> CString -> IO (FunPtr a))
+    -> VkDevice -> CString -> IO (FunPtr a)
+
 foreign import ccall unsafe "dynamic"
-  unwrap'vkGetInstanceProcAddr
+  unwrap'vkGetInstanceProcAddrUnsafe
     :: FunPtr (VkInstance -> CString -> IO (FunPtr a))
     -> VkInstance -> CString -> IO (FunPtr a)
 
 foreign import ccall unsafe "dynamic"
-  unwrap'vkGetDeviceProcAddr
+  unwrap'vkGetDeviceProcAddrUnsafe
     :: FunPtr (VkDevice -> CString -> IO (FunPtr a))
     -> VkDevice -> CString -> IO (FunPtr a)
 
 #else
 
+foreign import ccall safe "vkGetInstanceProcAddr"
+  c'vkGetInstanceProcAddrSafe :: VkInstance -> CString -> IO (FunPtr a)
+
+foreign import ccall safe "vkGetDeviceProcAddr"
+  c'vkGetDeviceProcAddrSafe :: VkDevice -> CString -> IO (FunPtr a)
+
 foreign import ccall unsafe "vkGetInstanceProcAddr"
-  c'vkGetInstanceProcAddr :: VkInstance -> CString -> IO (FunPtr a)
+  c'vkGetInstanceProcAddrUnsafe :: VkInstance -> CString -> IO (FunPtr a)
 
 foreign import ccall unsafe "vkGetDeviceProcAddr"
-  c'vkGetDeviceProcAddr :: VkDevice -> CString -> IO (FunPtr a)
+  c'vkGetDeviceProcAddrUnsafe :: VkDevice -> CString -> IO (FunPtr a)
+
 
 #endif
 
diff --git a/vulkan-api.cabal b/vulkan-api.cabal
--- a/vulkan-api.cabal
+++ b/vulkan-api.cabal
@@ -3,7 +3,7 @@
 -- it is autogenerated at genvulkan/src/Write/Cabal.hs
 --
 name:                vulkan-api
-version:             1.1.2.1
+version:             1.1.3.0
 synopsis:            Low-level low-overhead vulkan api bindings
 description:
     Haskell bindings for vulkan api as described in vk.xml.
@@ -26,6 +26,11 @@
     include/vulkan_loader.h
     cbits/vulkan_loader.c
 
+flag useUnsafeFFIDefault
+    description:
+      Use unsafe foreign imports of Vulkan functions by default
+    default: False
+
 flag usePlatformAndroidKhr
     description:
       Enable platform-specific extensions protected by CPP macros VK_USE_PLATFORM_ANDROID_KHR
@@ -151,6 +156,7 @@
         Graphics.Vulkan.Ext.VK_KHR_device_group_creation
         Graphics.Vulkan.Ext.VK_KHR_display
         Graphics.Vulkan.Ext.VK_KHR_display_swapchain
+        Graphics.Vulkan.Ext.VK_KHR_draw_indirect_count
         Graphics.Vulkan.Ext.VK_KHR_external_fence
         Graphics.Vulkan.Ext.VK_KHR_external_fence_capabilities
         Graphics.Vulkan.Ext.VK_KHR_external_fence_fd
@@ -160,6 +166,7 @@
         Graphics.Vulkan.Ext.VK_KHR_external_semaphore
         Graphics.Vulkan.Ext.VK_KHR_external_semaphore_capabilities
         Graphics.Vulkan.Ext.VK_KHR_external_semaphore_fd
+        Graphics.Vulkan.Ext.VK_KHR_get_display_properties2
         Graphics.Vulkan.Ext.VK_KHR_get_memory_requirements2
         Graphics.Vulkan.Ext.VK_KHR_get_physical_device_properties2
         Graphics.Vulkan.Ext.VK_KHR_get_surface_capabilities2
@@ -273,6 +280,7 @@
         Graphics.Vulkan.Types.Struct.AllocationCallbacks
         Graphics.Vulkan.Types.Struct.ApplicationInfo
         Graphics.Vulkan.Types.Struct.Attachment
+        Graphics.Vulkan.Types.Struct.Base
         Graphics.Vulkan.Types.Struct.Bind
         Graphics.Vulkan.Types.Struct.Buffer
         Graphics.Vulkan.Types.Struct.Clear
@@ -343,6 +351,9 @@
         Graphics.Vulkan.Types.Struct.Viewport
         Graphics.Vulkan.Types.Struct.WriteDescriptorSet
         Graphics.Vulkan.Types.Struct.XYColorEXT
+    if flag(useUnsafeFFIDefault)
+      cpp-options: -DUNSAFE_FFI_DEFAULT
+
     if flag(usePlatformAndroidKhr)
       cpp-options: -DVK_USE_PLATFORM_ANDROID_KHR
       exposed-modules:
