{-# language CPP #-}
module Graphics.Vulkan.Dynamic  ( InstanceCmds(..)
                                , getInstanceProcAddr'
                                , initInstanceCmds
                                , DeviceCmds(..)
                                , initDeviceCmds
                                ) where

import Graphics.Vulkan.CStruct.Utils (FixedArray)
import Foreign.Ptr (castFunPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.C.Types (CChar)
import Foreign.C.Types (CFloat)
import Foreign.C.Types (CInt)
import Foreign.C.Types (CSize)
import Data.Int (Int32)
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Ptr (Ptr(Ptr))
import Data.Word (Word16)
import Data.Word (Word32)
import Data.Word (Word64)
import Graphics.Vulkan.NamedType ((:::))
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (AHardwareBuffer)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildGeometryInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildOffsetInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureDeviceAddressInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureVersionKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (Bool32)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Buffer)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferCopy)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Buffer (BufferCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferImageCopy)
import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (BufferMemoryBarrier)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (BufferView)
import {-# SOURCE #-} Graphics.Vulkan.Core10.BufferView (BufferViewCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps (CalibratedTimestampInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearAttachment)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearColorValue)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearDepthStencilValue)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearRect)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderTypeNV)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferBeginInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (CommandBuffer_T)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (CommandPool)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandPool (CommandPoolCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (ComputePipelineCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureToMemoryInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (CopyDescriptorSet)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyMemoryToAccelerationStructureInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DebugReportCallbackEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportFlagsEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsLabelEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessageSeverityFlagBitsEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessageTypeFlagsEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCallbackDataEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DebugUtilsMessengerEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DeferredOperationKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorPool)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorSet)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorSetLayout)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (DeviceAddress)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Device (DeviceCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DeviceMemory)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (DeviceSize)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Device_T)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Display)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DisplayKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModeCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DisplayModeKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayModeProperties2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneCapabilities2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneInfo2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneProperties2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DisplayPowerInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayProperties2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplaySurfaceCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Event)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Event (EventCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Extent2D)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Fence)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Fence (FenceCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (FenceGetFdInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (FenceGetWin32HandleInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.Filter (Filter)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.Format (Format)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (FormatProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (FormatProperties2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Framebuffer)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (FramebufferCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (HANDLE)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Image)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageBlit)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageCopy)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (ImageCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierPropertiesEXT)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (ImageFormatProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)
import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (ImageMemoryBarrier)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageResolve)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (ImageSubresource)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageType (ImageType)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (ImageView)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX)
import {-# SOURCE #-} Graphics.Vulkan.Core10.ImageView (ImageViewCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (ImportFenceWin32HandleInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.IndexType (IndexType)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Instance_T)
import {-# SOURCE #-} Graphics.Vulkan.Core10.LayerDiscovery (LayerProperties)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Memory (MappedMemoryRange)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Memory (MemoryAllocateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (MemoryBarrier)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.MemoryManagement (MemoryRequirements)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
import {-# SOURCE #-} Graphics.Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (PerformanceConfigurationINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceMarkerInfoINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceOverrideInfoINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceParameterTypeINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceStreamMarkerInfoINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceValueINTEL)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceImageFormatInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceSparseImageFormatInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_tooling_info (PhysicalDeviceToolPropertiesEXT)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Pipeline)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (PipelineCache)
import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInternalRepresentationKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutablePropertiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableStatisticKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (PipelineLayout)
import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (QueryPool)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Query (QueryPoolCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.QueryType (QueryType)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Queue_T)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (RROutput)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (RenderPass)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (RenderPassCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (RenderPassCreateInfo2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.Result (Result)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Sampler)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Sampler (SamplerCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Semaphore)
import {-# SOURCE #-} Graphics.Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_info (ShaderInfoTypeAMD)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (ShaderModule)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Shader (ShaderModuleCreateInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (ShadingRatePaletteNV)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (SparseImageFormatProperties2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)
import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (StridedBufferRegionKHR)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Queue (SubmitInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents)
import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)
import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (SubresourceLayout)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCapabilities2EXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceCapabilities2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagBitsEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceFormat2KHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (SurfaceKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (SwapchainKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps (TimeDomainEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (ValidationCacheEXT)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Viewport)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (VisualID)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Wl_display)
import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Xcb_connection_t)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Xcb_visualid_t)
import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xlib_surface (XlibSurfaceCreateInfoKHR)
import Graphics.Vulkan.Zero (Zero(..))
data InstanceCmds = InstanceCmds
  { instanceCmdsHandle :: Ptr Instance_T
  , pVkDestroyInstance :: FunPtr (Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkEnumeratePhysicalDevices :: FunPtr (Ptr Instance_T -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr (Ptr PhysicalDevice_T)) -> IO Result)
  , pVkGetInstanceProcAddr :: FunPtr (Ptr Instance_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
  , pVkGetPhysicalDeviceProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr PhysicalDeviceProperties) -> IO ())
  , pVkGetPhysicalDeviceQueueFamilyProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr QueueFamilyProperties) -> IO ())
  , pVkGetPhysicalDeviceMemoryProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr PhysicalDeviceMemoryProperties) -> IO ())
  , pVkGetPhysicalDeviceFeatures :: FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr PhysicalDeviceFeatures) -> IO ())
  , pVkGetPhysicalDeviceFormatProperties :: FunPtr (Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr FormatProperties) -> IO ())
  , pVkGetPhysicalDeviceImageFormatProperties :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("pImageFormatProperties" ::: Ptr ImageFormatProperties) -> IO Result)
  , pVkCreateDevice :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pCreateInfo" ::: Ptr (DeviceCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDevice" ::: Ptr (Ptr Device_T)) -> IO Result)
  , pVkEnumerateDeviceLayerProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr LayerProperties) -> IO Result)
  , pVkEnumerateDeviceExtensionProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr ExtensionProperties) -> IO Result)
  , pVkGetPhysicalDeviceSparseImageFormatProperties :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ("samples" ::: SampleCountFlagBits) -> ImageUsageFlags -> ImageTiling -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties) -> IO ())
  , pVkCreateAndroidSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr AndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceDisplayPropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPropertiesKHR) -> IO Result)
  , pVkGetPhysicalDeviceDisplayPlanePropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlanePropertiesKHR) -> IO Result)
  , pVkGetDisplayPlaneSupportedDisplaysKHR :: FunPtr (Ptr PhysicalDevice_T -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr DisplayKHR) -> IO Result)
  , pVkGetDisplayModePropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModePropertiesKHR) -> IO Result)
  , pVkCreateDisplayModeKHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> ("pCreateInfo" ::: Ptr DisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMode" ::: Ptr DisplayModeKHR) -> IO Result)
  , pVkGetDisplayPlaneCapabilitiesKHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayModeKHR -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilitiesKHR) -> IO Result)
  , pVkCreateDisplayPlaneSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkDestroySurfaceKHR :: FunPtr (Ptr Instance_T -> SurfaceKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetPhysicalDeviceSurfaceSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> SurfaceKHR -> ("pSupported" ::: Ptr Bool32) -> IO Result)
  , pVkGetPhysicalDeviceSurfaceCapabilitiesKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilitiesKHR) -> IO Result)
  , pVkGetPhysicalDeviceSurfaceFormatsKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormatKHR) -> IO Result)
  , pVkGetPhysicalDeviceSurfacePresentModesKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result)
  , pVkCreateViSurfaceNN :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr ViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkCreateWaylandSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr WaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceWaylandPresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Wl_display -> IO Bool32)
  , pVkCreateWin32SurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr Win32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceWin32PresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> IO Bool32)
  , pVkCreateXlibSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr XlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceXlibPresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> VisualID -> IO Bool32)
  , pVkCreateXcbSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr XcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceXcbPresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Xcb_connection_t -> ("visual_id" ::: Xcb_visualid_t) -> IO Bool32)
  , pVkCreateImagePipeSurfaceFUCHSIA :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr ImagePipeSurfaceCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkCreateStreamDescriptorSurfaceGGP :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr StreamDescriptorSurfaceCreateInfoGGP) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkCreateDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCallback" ::: Ptr DebugReportCallbackEXT) -> IO Result)
  , pVkDestroyDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkDebugReportMessageEXT :: FunPtr (Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())
  , pVkGetPhysicalDeviceExternalImageFormatPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr ExternalImageFormatPropertiesNV) -> IO Result)
  , pVkGetPhysicalDeviceFeatures2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr (PhysicalDeviceFeatures2 a)) -> IO ())
  , pVkGetPhysicalDeviceProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr (PhysicalDeviceProperties2 a)) -> IO ())
  , pVkGetPhysicalDeviceFormatProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr (FormatProperties2 a)) -> IO ())
  , pVkGetPhysicalDeviceImageFormatProperties2 :: forall a b . FunPtr (Ptr PhysicalDevice_T -> ("pImageFormatInfo" ::: Ptr (PhysicalDeviceImageFormatInfo2 a)) -> ("pImageFormatProperties" ::: Ptr (ImageFormatProperties2 b)) -> IO Result)
  , pVkGetPhysicalDeviceQueueFamilyProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr (QueueFamilyProperties2 a)) -> IO ())
  , pVkGetPhysicalDeviceMemoryProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr (PhysicalDeviceMemoryProperties2 a)) -> IO ())
  , pVkGetPhysicalDeviceSparseImageFormatProperties2 :: FunPtr (Ptr PhysicalDevice_T -> ("pFormatInfo" ::: Ptr PhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties2) -> IO ())
  , pVkGetPhysicalDeviceExternalBufferProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties) -> IO ())
  , pVkGetPhysicalDeviceExternalSemaphoreProperties :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pExternalSemaphoreInfo" ::: Ptr (PhysicalDeviceExternalSemaphoreInfo a)) -> ("pExternalSemaphoreProperties" ::: Ptr ExternalSemaphoreProperties) -> IO ())
  , pVkGetPhysicalDeviceExternalFenceProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pExternalFenceInfo" ::: Ptr PhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr ExternalFenceProperties) -> IO ())
  , pVkReleaseDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> IO Result)
  , pVkAcquireXlibDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> DisplayKHR -> IO Result)
  , pVkGetRandROutputDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> RROutput -> ("pDisplay" ::: Ptr DisplayKHR) -> IO Result)
  , pVkGetPhysicalDeviceSurfaceCapabilities2EXT :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO Result)
  , pVkEnumeratePhysicalDeviceGroups :: FunPtr (Ptr Instance_T -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr PhysicalDeviceGroupProperties) -> IO Result)
  , pVkGetPhysicalDevicePresentRectanglesKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr Rect2D) -> IO Result)
  , pVkCreateIOSSurfaceMVK :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr IOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkCreateMacOSSurfaceMVK :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr MacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkCreateMetalSurfaceEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr MetalSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceMultisamplePropertiesEXT :: FunPtr (Ptr PhysicalDevice_T -> ("samples" ::: SampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr MultisamplePropertiesEXT) -> IO ())
  , pVkGetPhysicalDeviceSurfaceCapabilities2KHR :: forall a b . FunPtr (Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pSurfaceCapabilities" ::: Ptr (SurfaceCapabilities2KHR b)) -> IO Result)
  , pVkGetPhysicalDeviceSurfaceFormats2KHR :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormat2KHR) -> IO Result)
  , pVkGetPhysicalDeviceDisplayProperties2KHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayProperties2KHR) -> IO Result)
  , pVkGetPhysicalDeviceDisplayPlaneProperties2KHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlaneProperties2KHR) -> IO Result)
  , pVkGetDisplayModeProperties2KHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModeProperties2KHR) -> IO Result)
  , pVkGetDisplayPlaneCapabilities2KHR :: FunPtr (Ptr PhysicalDevice_T -> ("pDisplayPlaneInfo" ::: Ptr DisplayPlaneInfo2KHR) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilities2KHR) -> IO Result)
  , pVkGetPhysicalDeviceCalibrateableTimeDomainsEXT :: FunPtr (Ptr PhysicalDevice_T -> ("pTimeDomainCount" ::: Ptr Word32) -> ("pTimeDomains" ::: Ptr TimeDomainEXT) -> IO Result)
  , pVkCreateDebugUtilsMessengerEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMessenger" ::: Ptr DebugUtilsMessengerEXT) -> IO Result)
  , pVkDestroyDebugUtilsMessengerEXT :: FunPtr (Ptr Instance_T -> DebugUtilsMessengerEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkSubmitDebugUtilsMessageEXT :: FunPtr (Ptr Instance_T -> DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr DebugUtilsMessengerCallbackDataEXT) -> IO ())
  , pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixPropertiesNV) -> IO Result)
  , pVkGetPhysicalDeviceSurfacePresentModes2EXT :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result)
  , pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pCounterCount" ::: Ptr Word32) -> ("pCounters" ::: Ptr PerformanceCounterKHR) -> ("pCounterDescriptions" ::: Ptr PerformanceCounterDescriptionKHR) -> IO Result)
  , pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPerformanceQueryCreateInfo" ::: Ptr QueryPoolPerformanceCreateInfoKHR) -> ("pNumPasses" ::: Ptr Word32) -> IO ())
  , pVkCreateHeadlessSurfaceEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr HeadlessSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
  , pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: FunPtr (Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result)
  , pVkGetPhysicalDeviceToolPropertiesEXT :: FunPtr (Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result)
  }

deriving instance Eq InstanceCmds
deriving instance Show InstanceCmds
instance Zero InstanceCmds where
  zero = InstanceCmds
    nullPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr

-- | A version of 'getInstanceProcAddr' which can be called
-- with a null pointer for the instance.
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "vkGetInstanceProcAddr" getInstanceProcAddr' :: Ptr Instance_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction

initInstanceCmds :: Ptr Instance_T -> IO InstanceCmds
initInstanceCmds handle = do
  vkDestroyInstance <- getInstanceProcAddr' handle (Ptr "vkDestroyInstance"#)
  vkEnumeratePhysicalDevices <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDevices"#)
  vkGetInstanceProcAddr <- getInstanceProcAddr' handle (Ptr "vkGetInstanceProcAddr"#)
  vkGetPhysicalDeviceProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceProperties"#)
  vkGetPhysicalDeviceQueueFamilyProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyProperties"#)
  vkGetPhysicalDeviceMemoryProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceMemoryProperties"#)
  vkGetPhysicalDeviceFeatures <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFeatures"#)
  vkGetPhysicalDeviceFormatProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFormatProperties"#)
  vkGetPhysicalDeviceImageFormatProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceImageFormatProperties"#)
  vkCreateDevice <- getInstanceProcAddr' handle (Ptr "vkCreateDevice"#)
  vkEnumerateDeviceLayerProperties <- getInstanceProcAddr' handle (Ptr "vkEnumerateDeviceLayerProperties"#)
  vkEnumerateDeviceExtensionProperties <- getInstanceProcAddr' handle (Ptr "vkEnumerateDeviceExtensionProperties"#)
  vkGetPhysicalDeviceSparseImageFormatProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSparseImageFormatProperties"#)
  vkCreateAndroidSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateAndroidSurfaceKHR"#)
  vkGetPhysicalDeviceDisplayPropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayPropertiesKHR"#)
  vkGetPhysicalDeviceDisplayPlanePropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"#)
  vkGetDisplayPlaneSupportedDisplaysKHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayPlaneSupportedDisplaysKHR"#)
  vkGetDisplayModePropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayModePropertiesKHR"#)
  vkCreateDisplayModeKHR <- getInstanceProcAddr' handle (Ptr "vkCreateDisplayModeKHR"#)
  vkGetDisplayPlaneCapabilitiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayPlaneCapabilitiesKHR"#)
  vkCreateDisplayPlaneSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateDisplayPlaneSurfaceKHR"#)
  vkDestroySurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkDestroySurfaceKHR"#)
  vkGetPhysicalDeviceSurfaceSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceSupportKHR"#)
  vkGetPhysicalDeviceSurfaceCapabilitiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"#)
  vkGetPhysicalDeviceSurfaceFormatsKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceFormatsKHR"#)
  vkGetPhysicalDeviceSurfacePresentModesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfacePresentModesKHR"#)
  vkCreateViSurfaceNN <- getInstanceProcAddr' handle (Ptr "vkCreateViSurfaceNN"#)
  vkCreateWaylandSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateWaylandSurfaceKHR"#)
  vkGetPhysicalDeviceWaylandPresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceWaylandPresentationSupportKHR"#)
  vkCreateWin32SurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateWin32SurfaceKHR"#)
  vkGetPhysicalDeviceWin32PresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceWin32PresentationSupportKHR"#)
  vkCreateXlibSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateXlibSurfaceKHR"#)
  vkGetPhysicalDeviceXlibPresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceXlibPresentationSupportKHR"#)
  vkCreateXcbSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateXcbSurfaceKHR"#)
  vkGetPhysicalDeviceXcbPresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceXcbPresentationSupportKHR"#)
  vkCreateImagePipeSurfaceFUCHSIA <- getInstanceProcAddr' handle (Ptr "vkCreateImagePipeSurfaceFUCHSIA"#)
  vkCreateStreamDescriptorSurfaceGGP <- getInstanceProcAddr' handle (Ptr "vkCreateStreamDescriptorSurfaceGGP"#)
  vkCreateDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkCreateDebugReportCallbackEXT"#)
  vkDestroyDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkDestroyDebugReportCallbackEXT"#)
  vkDebugReportMessageEXT <- getInstanceProcAddr' handle (Ptr "vkDebugReportMessageEXT"#)
  vkGetPhysicalDeviceExternalImageFormatPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"#)
  vkGetPhysicalDeviceFeatures2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFeatures2"#)
  vkGetPhysicalDeviceProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceProperties2"#)
  vkGetPhysicalDeviceFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFormatProperties2"#)
  vkGetPhysicalDeviceImageFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceImageFormatProperties2"#)
  vkGetPhysicalDeviceQueueFamilyProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyProperties2"#)
  vkGetPhysicalDeviceMemoryProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceMemoryProperties2"#)
  vkGetPhysicalDeviceSparseImageFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2"#)
  vkGetPhysicalDeviceExternalBufferProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalBufferProperties"#)
  vkGetPhysicalDeviceExternalSemaphoreProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties"#)
  vkGetPhysicalDeviceExternalFenceProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalFenceProperties"#)
  vkReleaseDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkReleaseDisplayEXT"#)
  vkAcquireXlibDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkAcquireXlibDisplayEXT"#)
  vkGetRandROutputDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkGetRandROutputDisplayEXT"#)
  vkGetPhysicalDeviceSurfaceCapabilities2EXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceCapabilities2EXT"#)
  vkEnumeratePhysicalDeviceGroups <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDeviceGroups"#)
  vkGetPhysicalDevicePresentRectanglesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDevicePresentRectanglesKHR"#)
  vkCreateIOSSurfaceMVK <- getInstanceProcAddr' handle (Ptr "vkCreateIOSSurfaceMVK"#)
  vkCreateMacOSSurfaceMVK <- getInstanceProcAddr' handle (Ptr "vkCreateMacOSSurfaceMVK"#)
  vkCreateMetalSurfaceEXT <- getInstanceProcAddr' handle (Ptr "vkCreateMetalSurfaceEXT"#)
  vkGetPhysicalDeviceMultisamplePropertiesEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceMultisamplePropertiesEXT"#)
  vkGetPhysicalDeviceSurfaceCapabilities2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceCapabilities2KHR"#)
  vkGetPhysicalDeviceSurfaceFormats2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceFormats2KHR"#)
  vkGetPhysicalDeviceDisplayProperties2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayProperties2KHR"#)
  vkGetPhysicalDeviceDisplayPlaneProperties2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"#)
  vkGetDisplayModeProperties2KHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayModeProperties2KHR"#)
  vkGetDisplayPlaneCapabilities2KHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayPlaneCapabilities2KHR"#)
  vkGetPhysicalDeviceCalibrateableTimeDomainsEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"#)
  vkCreateDebugUtilsMessengerEXT <- getInstanceProcAddr' handle (Ptr "vkCreateDebugUtilsMessengerEXT"#)
  vkDestroyDebugUtilsMessengerEXT <- getInstanceProcAddr' handle (Ptr "vkDestroyDebugUtilsMessengerEXT"#)
  vkSubmitDebugUtilsMessageEXT <- getInstanceProcAddr' handle (Ptr "vkSubmitDebugUtilsMessageEXT"#)
  vkGetPhysicalDeviceCooperativeMatrixPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"#)
  vkGetPhysicalDeviceSurfacePresentModes2EXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfacePresentModes2EXT"#)
  vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"#)
  vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"#)
  vkCreateHeadlessSurfaceEXT <- getInstanceProcAddr' handle (Ptr "vkCreateHeadlessSurfaceEXT"#)
  vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"#)
  vkGetPhysicalDeviceToolPropertiesEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceToolPropertiesEXT"#)
  pure $ InstanceCmds handle
    (castFunPtr @_ @(Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyInstance)
    (castFunPtr @_ @(Ptr Instance_T -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr (Ptr PhysicalDevice_T)) -> IO Result) vkEnumeratePhysicalDevices)
    (castFunPtr @_ @(Ptr Instance_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetInstanceProcAddr)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr PhysicalDeviceProperties) -> IO ()) vkGetPhysicalDeviceProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr QueueFamilyProperties) -> IO ()) vkGetPhysicalDeviceQueueFamilyProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr PhysicalDeviceMemoryProperties) -> IO ()) vkGetPhysicalDeviceMemoryProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr PhysicalDeviceFeatures) -> IO ()) vkGetPhysicalDeviceFeatures)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr FormatProperties) -> IO ()) vkGetPhysicalDeviceFormatProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("pImageFormatProperties" ::: Ptr ImageFormatProperties) -> IO Result) vkGetPhysicalDeviceImageFormatProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pCreateInfo" ::: Ptr (DeviceCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDevice" ::: Ptr (Ptr Device_T)) -> IO Result) vkCreateDevice)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr LayerProperties) -> IO Result) vkEnumerateDeviceLayerProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr ExtensionProperties) -> IO Result) vkEnumerateDeviceExtensionProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ("samples" ::: SampleCountFlagBits) -> ImageUsageFlags -> ImageTiling -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties) -> IO ()) vkGetPhysicalDeviceSparseImageFormatProperties)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr AndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateAndroidSurfaceKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPropertiesKHR) -> IO Result) vkGetPhysicalDeviceDisplayPropertiesKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlanePropertiesKHR) -> IO Result) vkGetPhysicalDeviceDisplayPlanePropertiesKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr DisplayKHR) -> IO Result) vkGetDisplayPlaneSupportedDisplaysKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModePropertiesKHR) -> IO Result) vkGetDisplayModePropertiesKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> ("pCreateInfo" ::: Ptr DisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMode" ::: Ptr DisplayModeKHR) -> IO Result) vkCreateDisplayModeKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayModeKHR -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilitiesKHR) -> IO Result) vkGetDisplayPlaneCapabilitiesKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateDisplayPlaneSurfaceKHR)
    (castFunPtr @_ @(Ptr Instance_T -> SurfaceKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySurfaceKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> SurfaceKHR -> ("pSupported" ::: Ptr Bool32) -> IO Result) vkGetPhysicalDeviceSurfaceSupportKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilitiesKHR) -> IO Result) vkGetPhysicalDeviceSurfaceCapabilitiesKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormatKHR) -> IO Result) vkGetPhysicalDeviceSurfaceFormatsKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result) vkGetPhysicalDeviceSurfacePresentModesKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr ViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateViSurfaceNN)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr WaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateWaylandSurfaceKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Wl_display -> IO Bool32) vkGetPhysicalDeviceWaylandPresentationSupportKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr Win32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateWin32SurfaceKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> IO Bool32) vkGetPhysicalDeviceWin32PresentationSupportKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr XlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateXlibSurfaceKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> VisualID -> IO Bool32) vkGetPhysicalDeviceXlibPresentationSupportKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr XcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateXcbSurfaceKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Xcb_connection_t -> ("visual_id" ::: Xcb_visualid_t) -> IO Bool32) vkGetPhysicalDeviceXcbPresentationSupportKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr ImagePipeSurfaceCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateImagePipeSurfaceFUCHSIA)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr StreamDescriptorSurfaceCreateInfoGGP) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateStreamDescriptorSurfaceGGP)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCallback" ::: Ptr DebugReportCallbackEXT) -> IO Result) vkCreateDebugReportCallbackEXT)
    (castFunPtr @_ @(Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDebugReportCallbackEXT)
    (castFunPtr @_ @(Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()) vkDebugReportMessageEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr ExternalImageFormatPropertiesNV) -> IO Result) vkGetPhysicalDeviceExternalImageFormatPropertiesNV)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr (PhysicalDeviceFeatures2 _)) -> IO ()) vkGetPhysicalDeviceFeatures2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr (PhysicalDeviceProperties2 _)) -> IO ()) vkGetPhysicalDeviceProperties2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr (FormatProperties2 _)) -> IO ()) vkGetPhysicalDeviceFormatProperties2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pImageFormatInfo" ::: Ptr (PhysicalDeviceImageFormatInfo2 _)) -> ("pImageFormatProperties" ::: Ptr (ImageFormatProperties2 _)) -> IO Result) vkGetPhysicalDeviceImageFormatProperties2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr (QueueFamilyProperties2 _)) -> IO ()) vkGetPhysicalDeviceQueueFamilyProperties2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr (PhysicalDeviceMemoryProperties2 _)) -> IO ()) vkGetPhysicalDeviceMemoryProperties2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFormatInfo" ::: Ptr PhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties2) -> IO ()) vkGetPhysicalDeviceSparseImageFormatProperties2)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties) -> IO ()) vkGetPhysicalDeviceExternalBufferProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalSemaphoreInfo" ::: Ptr (PhysicalDeviceExternalSemaphoreInfo _)) -> ("pExternalSemaphoreProperties" ::: Ptr ExternalSemaphoreProperties) -> IO ()) vkGetPhysicalDeviceExternalSemaphoreProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalFenceInfo" ::: Ptr PhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr ExternalFenceProperties) -> IO ()) vkGetPhysicalDeviceExternalFenceProperties)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> IO Result) vkReleaseDisplayEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> DisplayKHR -> IO Result) vkAcquireXlibDisplayEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> RROutput -> ("pDisplay" ::: Ptr DisplayKHR) -> IO Result) vkGetRandROutputDisplayEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO Result) vkGetPhysicalDeviceSurfaceCapabilities2EXT)
    (castFunPtr @_ @(Ptr Instance_T -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr PhysicalDeviceGroupProperties) -> IO Result) vkEnumeratePhysicalDeviceGroups)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr Rect2D) -> IO Result) vkGetPhysicalDevicePresentRectanglesKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr IOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateIOSSurfaceMVK)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr MacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateMacOSSurfaceMVK)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr MetalSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateMetalSurfaceEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("samples" ::: SampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr MultisamplePropertiesEXT) -> IO ()) vkGetPhysicalDeviceMultisamplePropertiesEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pSurfaceCapabilities" ::: Ptr (SurfaceCapabilities2KHR _)) -> IO Result) vkGetPhysicalDeviceSurfaceCapabilities2KHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormat2KHR) -> IO Result) vkGetPhysicalDeviceSurfaceFormats2KHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayProperties2KHR) -> IO Result) vkGetPhysicalDeviceDisplayProperties2KHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlaneProperties2KHR) -> IO Result) vkGetPhysicalDeviceDisplayPlaneProperties2KHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModeProperties2KHR) -> IO Result) vkGetDisplayModeProperties2KHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pDisplayPlaneInfo" ::: Ptr DisplayPlaneInfo2KHR) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilities2KHR) -> IO Result) vkGetDisplayPlaneCapabilities2KHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pTimeDomainCount" ::: Ptr Word32) -> ("pTimeDomains" ::: Ptr TimeDomainEXT) -> IO Result) vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMessenger" ::: Ptr DebugUtilsMessengerEXT) -> IO Result) vkCreateDebugUtilsMessengerEXT)
    (castFunPtr @_ @(Ptr Instance_T -> DebugUtilsMessengerEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDebugUtilsMessengerEXT)
    (castFunPtr @_ @(Ptr Instance_T -> DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr DebugUtilsMessengerCallbackDataEXT) -> IO ()) vkSubmitDebugUtilsMessageEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixPropertiesNV) -> IO Result) vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result) vkGetPhysicalDeviceSurfacePresentModes2EXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pCounterCount" ::: Ptr Word32) -> ("pCounters" ::: Ptr PerformanceCounterKHR) -> ("pCounterDescriptions" ::: Ptr PerformanceCounterDescriptionKHR) -> IO Result) vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPerformanceQueryCreateInfo" ::: Ptr QueryPoolPerformanceCreateInfoKHR) -> ("pNumPasses" ::: Ptr Word32) -> IO ()) vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)
    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr HeadlessSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateHeadlessSurfaceEXT)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result) vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)
    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result) vkGetPhysicalDeviceToolPropertiesEXT)

data DeviceCmds = DeviceCmds
  { deviceCmdsHandle :: Ptr Device_T
  , pVkGetDeviceProcAddr :: FunPtr (Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
  , pVkDestroyDevice :: FunPtr (Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetDeviceQueue :: FunPtr (Ptr Device_T -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ())
  , pVkQueueSubmit :: forall a . FunPtr (Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SubmitInfo a)) -> Fence -> IO Result)
  , pVkQueueWaitIdle :: FunPtr (Ptr Queue_T -> IO Result)
  , pVkDeviceWaitIdle :: FunPtr (Ptr Device_T -> IO Result)
  , pVkAllocateMemory :: forall a . FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr (MemoryAllocateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMemory" ::: Ptr DeviceMemory) -> IO Result)
  , pVkFreeMemory :: FunPtr (Ptr Device_T -> DeviceMemory -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkMapMemory :: FunPtr (Ptr Device_T -> DeviceMemory -> ("offset" ::: DeviceSize) -> DeviceSize -> MemoryMapFlags -> ("ppData" ::: Ptr (Ptr ())) -> IO Result)
  , pVkUnmapMemory :: FunPtr (Ptr Device_T -> DeviceMemory -> IO ())
  , pVkFlushMappedMemoryRanges :: FunPtr (Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result)
  , pVkInvalidateMappedMemoryRanges :: FunPtr (Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result)
  , pVkGetDeviceMemoryCommitment :: FunPtr (Ptr Device_T -> DeviceMemory -> ("pCommittedMemoryInBytes" ::: Ptr DeviceSize) -> IO ())
  , pVkGetBufferMemoryRequirements :: FunPtr (Ptr Device_T -> Buffer -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ())
  , pVkBindBufferMemory :: FunPtr (Ptr Device_T -> Buffer -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result)
  , pVkGetImageMemoryRequirements :: FunPtr (Ptr Device_T -> Image -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ())
  , pVkBindImageMemory :: FunPtr (Ptr Device_T -> Image -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result)
  , pVkGetImageSparseMemoryRequirements :: FunPtr (Ptr Device_T -> Image -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements) -> IO ())
  , pVkQueueBindSparse :: forall a . FunPtr (Ptr Queue_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr (BindSparseInfo a)) -> Fence -> IO Result)
  , pVkCreateFence :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (FenceCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result)
  , pVkDestroyFence :: FunPtr (Ptr Device_T -> Fence -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkResetFences :: FunPtr (Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> IO Result)
  , pVkGetFenceStatus :: FunPtr (Ptr Device_T -> Fence -> IO Result)
  , pVkWaitForFences :: FunPtr (Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> ("waitAll" ::: Bool32) -> ("timeout" ::: Word64) -> IO Result)
  , pVkCreateSemaphore :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SemaphoreCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSemaphore" ::: Ptr Semaphore) -> IO Result)
  , pVkDestroySemaphore :: FunPtr (Ptr Device_T -> Semaphore -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateEvent :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr EventCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pEvent" ::: Ptr Event) -> IO Result)
  , pVkDestroyEvent :: FunPtr (Ptr Device_T -> Event -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetEventStatus :: FunPtr (Ptr Device_T -> Event -> IO Result)
  , pVkSetEvent :: FunPtr (Ptr Device_T -> Event -> IO Result)
  , pVkResetEvent :: FunPtr (Ptr Device_T -> Event -> IO Result)
  , pVkCreateQueryPool :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (QueryPoolCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pQueryPool" ::: Ptr QueryPool) -> IO Result)
  , pVkDestroyQueryPool :: FunPtr (Ptr Device_T -> QueryPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetQueryPoolResults :: FunPtr (Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO Result)
  , pVkResetQueryPool :: FunPtr (Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())
  , pVkCreateBuffer :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (BufferCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pBuffer" ::: Ptr Buffer) -> IO Result)
  , pVkDestroyBuffer :: FunPtr (Ptr Device_T -> Buffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateBufferView :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferViewCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr BufferView) -> IO Result)
  , pVkDestroyBufferView :: FunPtr (Ptr Device_T -> BufferView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateImage :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pImage" ::: Ptr Image) -> IO Result)
  , pVkDestroyImage :: FunPtr (Ptr Device_T -> Image -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetImageSubresourceLayout :: FunPtr (Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource) -> ("pLayout" ::: Ptr SubresourceLayout) -> IO ())
  , pVkCreateImageView :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageViewCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr ImageView) -> IO Result)
  , pVkDestroyImageView :: FunPtr (Ptr Device_T -> ImageView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateShaderModule :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (ShaderModuleCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pShaderModule" ::: Ptr ShaderModule) -> IO Result)
  , pVkDestroyShaderModule :: FunPtr (Ptr Device_T -> ShaderModule -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreatePipelineCache :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineCache" ::: Ptr PipelineCache) -> IO Result)
  , pVkDestroyPipelineCache :: FunPtr (Ptr Device_T -> PipelineCache -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetPipelineCacheData :: FunPtr (Ptr Device_T -> PipelineCache -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result)
  , pVkMergePipelineCaches :: FunPtr (Ptr Device_T -> ("dstCache" ::: PipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr PipelineCache) -> IO Result)
  , pVkCreateGraphicsPipelines :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (GraphicsPipelineCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)
  , pVkCreateComputePipelines :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (ComputePipelineCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)
  , pVkDestroyPipeline :: FunPtr (Ptr Device_T -> Pipeline -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreatePipelineLayout :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineLayout" ::: Ptr PipelineLayout) -> IO Result)
  , pVkDestroyPipelineLayout :: FunPtr (Ptr Device_T -> PipelineLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateSampler :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSampler" ::: Ptr Sampler) -> IO Result)
  , pVkDestroySampler :: FunPtr (Ptr Device_T -> Sampler -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateDescriptorSetLayout :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSetLayout" ::: Ptr DescriptorSetLayout) -> IO Result)
  , pVkDestroyDescriptorSetLayout :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateDescriptorPool :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorPoolCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorPool" ::: Ptr DescriptorPool) -> IO Result)
  , pVkDestroyDescriptorPool :: FunPtr (Ptr Device_T -> DescriptorPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkResetDescriptorPool :: FunPtr (Ptr Device_T -> DescriptorPool -> DescriptorPoolResetFlags -> IO Result)
  , pVkAllocateDescriptorSets :: forall a . FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr (DescriptorSetAllocateInfo a)) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result)
  , pVkFreeDescriptorSets :: FunPtr (Ptr Device_T -> DescriptorPool -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result)
  , pVkUpdateDescriptorSets :: forall a . FunPtr (Ptr Device_T -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet a)) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr CopyDescriptorSet) -> IO ())
  , pVkCreateFramebuffer :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (FramebufferCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFramebuffer" ::: Ptr Framebuffer) -> IO Result)
  , pVkDestroyFramebuffer :: FunPtr (Ptr Device_T -> Framebuffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCreateRenderPass :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result)
  , pVkDestroyRenderPass :: FunPtr (Ptr Device_T -> RenderPass -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetRenderAreaGranularity :: FunPtr (Ptr Device_T -> RenderPass -> ("pGranularity" ::: Ptr Extent2D) -> IO ())
  , pVkCreateCommandPool :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CommandPoolCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result)
  , pVkDestroyCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkResetCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result)
  , pVkAllocateCommandBuffers :: FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr CommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO Result)
  , pVkFreeCommandBuffers :: FunPtr (Ptr Device_T -> CommandPool -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ())
  , pVkBeginCommandBuffer :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pBeginInfo" ::: Ptr (CommandBufferBeginInfo a)) -> IO Result)
  , pVkEndCommandBuffer :: FunPtr (Ptr CommandBuffer_T -> IO Result)
  , pVkResetCommandBuffer :: FunPtr (Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result)
  , pVkCmdBindPipeline :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ())
  , pVkCmdSetViewport :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ())
  , pVkCmdSetScissor :: FunPtr (Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ())
  , pVkCmdSetLineWidth :: FunPtr (Ptr CommandBuffer_T -> ("lineWidth" ::: CFloat) -> IO ())
  , pVkCmdSetDepthBias :: FunPtr (Ptr CommandBuffer_T -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())
  , pVkCmdSetBlendConstants :: FunPtr (Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (FixedArray 4 CFloat)) -> IO ())
  , pVkCmdSetDepthBounds :: FunPtr (Ptr CommandBuffer_T -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())
  , pVkCmdSetStencilCompareMask :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())
  , pVkCmdSetStencilWriteMask :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())
  , pVkCmdSetStencilReference :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("reference" ::: Word32) -> IO ())
  , pVkCmdBindDescriptorSets :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())
  , pVkCmdBindIndexBuffer :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ())
  , pVkCmdBindVertexBuffers :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ())
  , pVkCmdDraw :: FunPtr (Ptr CommandBuffer_T -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())
  , pVkCmdDrawIndexed :: FunPtr (Ptr CommandBuffer_T -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())
  , pVkCmdDrawIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
  , pVkCmdDrawIndexedIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
  , pVkCmdDispatch :: FunPtr (Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
  , pVkCmdDispatchIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ())
  , pVkCmdCopyBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferCopy) -> IO ())
  , pVkCmdCopyImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageCopy) -> IO ())
  , pVkCmdBlitImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ())
  , pVkCmdCopyBufferToImage :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())
  , pVkCmdCopyImageToBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())
  , pVkCmdUpdateBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
  , pVkCmdFillBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ())
  , pVkCmdClearColorImage :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ())
  , pVkCmdClearDepthStencilImage :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pDepthStencil" ::: Ptr ClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ())
  , pVkCmdClearAttachments :: FunPtr (Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr ClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr ClearRect) -> IO ())
  , pVkCmdResolveImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageResolve) -> IO ())
  , pVkCmdSetEvent :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ())
  , pVkCmdResetEvent :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ())
  , pVkCmdWaitEvents :: forall a . FunPtr (Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier a)) -> IO ())
  , pVkCmdPipelineBarrier :: forall a . FunPtr (Ptr CommandBuffer_T -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier a)) -> IO ())
  , pVkCmdBeginQuery :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> IO ())
  , pVkCmdEndQuery :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> IO ())
  , pVkCmdBeginConditionalRenderingEXT :: FunPtr (Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfoEXT) -> IO ())
  , pVkCmdEndConditionalRenderingEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())
  , pVkCmdResetQueryPool :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())
  , pVkCmdWriteTimestamp :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ())
  , pVkCmdCopyQueryPoolResults :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ())
  , pVkCmdPushConstants :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())
  , pVkCmdBeginRenderPass :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo a)) -> SubpassContents -> IO ())
  , pVkCmdNextSubpass :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ())
  , pVkCmdEndRenderPass :: FunPtr (Ptr CommandBuffer_T -> IO ())
  , pVkCmdExecuteCommands :: FunPtr (Ptr CommandBuffer_T -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ())
  , pVkCreateSharedSwapchainsKHR :: forall a . FunPtr (Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SwapchainCreateInfoKHR a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> IO Result)
  , pVkCreateSwapchainKHR :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SwapchainCreateInfoKHR a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchain" ::: Ptr SwapchainKHR) -> IO Result)
  , pVkDestroySwapchainKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetSwapchainImagesKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr Image) -> IO Result)
  , pVkAcquireNextImageKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("timeout" ::: Word64) -> Semaphore -> Fence -> ("pImageIndex" ::: Ptr Word32) -> IO Result)
  , pVkQueuePresentKHR :: forall a . FunPtr (Ptr Queue_T -> ("pPresentInfo" ::: Ptr (PresentInfoKHR a)) -> IO Result)
  , pVkDebugMarkerSetObjectNameEXT :: FunPtr (Ptr Device_T -> ("pNameInfo" ::: Ptr DebugMarkerObjectNameInfoEXT) -> IO Result)
  , pVkDebugMarkerSetObjectTagEXT :: FunPtr (Ptr Device_T -> ("pTagInfo" ::: Ptr DebugMarkerObjectTagInfoEXT) -> IO Result)
  , pVkCmdDebugMarkerBeginEXT :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ())
  , pVkCmdDebugMarkerEndEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())
  , pVkCmdDebugMarkerInsertEXT :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ())
  , pVkGetMemoryWin32HandleNV :: FunPtr (Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
  , pVkCmdExecuteGeneratedCommandsNV :: FunPtr (Ptr CommandBuffer_T -> ("isPreprocessed" ::: Bool32) -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ())
  , pVkCmdPreprocessGeneratedCommandsNV :: FunPtr (Ptr CommandBuffer_T -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ())
  , pVkCmdBindPipelineShaderGroupNV :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> ("groupIndex" ::: Word32) -> IO ())
  , pVkGetGeneratedCommandsMemoryRequirementsNV :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr GeneratedCommandsMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 a)) -> IO ())
  , pVkCreateIndirectCommandsLayoutNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNV) -> IO Result)
  , pVkDestroyIndirectCommandsLayoutNV :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkCmdPushDescriptorSetKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet a)) -> IO ())
  , pVkTrimCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
  , pVkGetMemoryWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
  , pVkGetMemoryWin32HandlePropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result)
  , pVkGetMemoryFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr MemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)
  , pVkGetMemoryFdPropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result)
  , pVkGetSemaphoreWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr SemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
  , pVkImportSemaphoreWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr ImportSemaphoreWin32HandleInfoKHR) -> IO Result)
  , pVkGetSemaphoreFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr SemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)
  , pVkImportSemaphoreFdKHR :: FunPtr (Ptr Device_T -> ("pImportSemaphoreFdInfo" ::: Ptr ImportSemaphoreFdInfoKHR) -> IO Result)
  , pVkGetFenceWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr FenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
  , pVkImportFenceWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pImportFenceWin32HandleInfo" ::: Ptr ImportFenceWin32HandleInfoKHR) -> IO Result)
  , pVkGetFenceFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr FenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)
  , pVkImportFenceFdKHR :: FunPtr (Ptr Device_T -> ("pImportFenceFdInfo" ::: Ptr ImportFenceFdInfoKHR) -> IO Result)
  , pVkDisplayPowerControlEXT :: FunPtr (Ptr Device_T -> DisplayKHR -> ("pDisplayPowerInfo" ::: Ptr DisplayPowerInfoEXT) -> IO Result)
  , pVkRegisterDeviceEventEXT :: FunPtr (Ptr Device_T -> ("pDeviceEventInfo" ::: Ptr DeviceEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result)
  , pVkRegisterDisplayEventEXT :: FunPtr (Ptr Device_T -> DisplayKHR -> ("pDisplayEventInfo" ::: Ptr DisplayEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result)
  , pVkGetSwapchainCounterEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> ("pCounterValue" ::: Ptr Word64) -> IO Result)
  , pVkGetDeviceGroupPeerMemoryFeatures :: FunPtr (Ptr Device_T -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr PeerMemoryFeatureFlags) -> IO ())
  , pVkBindBufferMemory2 :: forall a . FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindBufferMemoryInfo a)) -> IO Result)
  , pVkBindImageMemory2 :: forall a . FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindImageMemoryInfo a)) -> IO Result)
  , pVkCmdSetDeviceMask :: FunPtr (Ptr CommandBuffer_T -> ("deviceMask" ::: Word32) -> IO ())
  , pVkGetDeviceGroupPresentCapabilitiesKHR :: FunPtr (Ptr Device_T -> ("pDeviceGroupPresentCapabilities" ::: Ptr DeviceGroupPresentCapabilitiesKHR) -> IO Result)
  , pVkGetDeviceGroupSurfacePresentModesKHR :: FunPtr (Ptr Device_T -> SurfaceKHR -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)
  , pVkAcquireNextImage2KHR :: FunPtr (Ptr Device_T -> ("pAcquireInfo" ::: Ptr AcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO Result)
  , pVkCmdDispatchBase :: FunPtr (Ptr CommandBuffer_T -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())
  , pVkCreateDescriptorUpdateTemplate :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr DescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr DescriptorUpdateTemplate) -> IO Result)
  , pVkDestroyDescriptorUpdateTemplate :: FunPtr (Ptr Device_T -> DescriptorUpdateTemplate -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkUpdateDescriptorSetWithTemplate :: FunPtr (Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> ("pData" ::: Ptr ()) -> IO ())
  , pVkCmdPushDescriptorSetWithTemplateKHR :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())
  , pVkSetHdrMetadataEXT :: FunPtr (Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> ("pMetadata" ::: Ptr HdrMetadataEXT) -> IO ())
  , pVkGetSwapchainStatusKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
  , pVkGetRefreshCycleDurationGOOGLE :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pDisplayTimingProperties" ::: Ptr RefreshCycleDurationGOOGLE) -> IO Result)
  , pVkGetPastPresentationTimingGOOGLE :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr PastPresentationTimingGOOGLE) -> IO Result)
  , pVkCmdSetViewportWScalingNV :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr ViewportWScalingNV) -> IO ())
  , pVkCmdSetDiscardRectangleEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr Rect2D) -> IO ())
  , pVkCmdSetSampleLocationsEXT :: FunPtr (Ptr CommandBuffer_T -> ("pSampleLocationsInfo" ::: Ptr SampleLocationsInfoEXT) -> IO ())
  , pVkGetBufferMemoryRequirements2 :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 a)) -> IO ())
  , pVkGetImageMemoryRequirements2 :: forall a b . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (ImageMemoryRequirementsInfo2 a)) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 b)) -> IO ())
  , pVkGetImageSparseMemoryRequirements2 :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ())
  , pVkCreateSamplerYcbcrConversion :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerYcbcrConversionCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr SamplerYcbcrConversion) -> IO Result)
  , pVkDestroySamplerYcbcrConversion :: FunPtr (Ptr Device_T -> SamplerYcbcrConversion -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetDeviceQueue2 :: FunPtr (Ptr Device_T -> ("pQueueInfo" ::: Ptr DeviceQueueInfo2) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ())
  , pVkCreateValidationCacheEXT :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO Result)
  , pVkDestroyValidationCacheEXT :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetValidationCacheDataEXT :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result)
  , pVkMergeValidationCachesEXT :: FunPtr (Ptr Device_T -> ("dstCache" ::: ValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr ValidationCacheEXT) -> IO Result)
  , pVkGetDescriptorSetLayoutSupport :: forall a b . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo a)) -> ("pSupport" ::: Ptr (DescriptorSetLayoutSupport b)) -> IO ())
  , pVkGetShaderInfoAMD :: FunPtr (Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO Result)
  , pVkSetLocalDimmingAMD :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("localDimmingEnable" ::: Bool32) -> IO ())
  , pVkGetCalibratedTimestampsEXT :: FunPtr (Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr CalibratedTimestampInfoEXT) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result)
  , pVkSetDebugUtilsObjectNameEXT :: FunPtr (Ptr Device_T -> ("pNameInfo" ::: Ptr DebugUtilsObjectNameInfoEXT) -> IO Result)
  , pVkSetDebugUtilsObjectTagEXT :: FunPtr (Ptr Device_T -> ("pTagInfo" ::: Ptr DebugUtilsObjectTagInfoEXT) -> IO Result)
  , pVkQueueBeginDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())
  , pVkQueueEndDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> IO ())
  , pVkQueueInsertDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())
  , pVkCmdBeginDebugUtilsLabelEXT :: FunPtr (Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())
  , pVkCmdEndDebugUtilsLabelEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())
  , pVkCmdInsertDebugUtilsLabelEXT :: FunPtr (Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())
  , pVkGetMemoryHostPointerPropertiesEXT :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr MemoryHostPointerPropertiesEXT) -> IO Result)
  , pVkCmdWriteBufferMarkerAMD :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ())
  , pVkCreateRenderPass2 :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo2 a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result)
  , pVkCmdBeginRenderPass2 :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo a)) -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> IO ())
  , pVkCmdNextSubpass2 :: FunPtr (Ptr CommandBuffer_T -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ())
  , pVkCmdEndRenderPass2 :: FunPtr (Ptr CommandBuffer_T -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ())
  , pVkGetSemaphoreCounterValue :: FunPtr (Ptr Device_T -> Semaphore -> ("pValue" ::: Ptr Word64) -> IO Result)
  , pVkWaitSemaphores :: FunPtr (Ptr Device_T -> ("pWaitInfo" ::: Ptr SemaphoreWaitInfo) -> ("timeout" ::: Word64) -> IO Result)
  , pVkSignalSemaphore :: FunPtr (Ptr Device_T -> ("pSignalInfo" ::: Ptr SemaphoreSignalInfo) -> IO Result)
  , pVkGetAndroidHardwareBufferPropertiesANDROID :: forall a . FunPtr (Ptr Device_T -> Ptr AHardwareBuffer -> ("pProperties" ::: Ptr (AndroidHardwareBufferPropertiesANDROID a)) -> IO Result)
  , pVkGetMemoryAndroidHardwareBufferANDROID :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr MemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO Result)
  , pVkCmdDrawIndirectCount :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
  , pVkCmdDrawIndexedIndirectCount :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
  , pVkCmdSetCheckpointNV :: FunPtr (Ptr CommandBuffer_T -> ("pCheckpointMarker" ::: Ptr ()) -> IO ())
  , pVkGetQueueCheckpointDataNV :: FunPtr (Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointDataNV) -> IO ())
  , pVkCmdBindTransformFeedbackBuffersEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> IO ())
  , pVkCmdBeginTransformFeedbackEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ())
  , pVkCmdEndTransformFeedbackEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ())
  , pVkCmdBeginQueryIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> IO ())
  , pVkCmdEndQueryIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> IO ())
  , pVkCmdDrawIndirectByteCountEXT :: FunPtr (Ptr CommandBuffer_T -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ())
  , pVkCmdSetExclusiveScissorNV :: FunPtr (Ptr CommandBuffer_T -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissorCount" ::: Word32) -> ("pExclusiveScissors" ::: Ptr Rect2D) -> IO ())
  , pVkCmdBindShadingRateImageNV :: FunPtr (Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ())
  , pVkCmdSetViewportShadingRatePaletteNV :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pShadingRatePalettes" ::: Ptr ShadingRatePaletteNV) -> IO ())
  , pVkCmdSetCoarseSampleOrderNV :: FunPtr (Ptr CommandBuffer_T -> CoarseSampleOrderTypeNV -> ("customSampleOrderCount" ::: Word32) -> ("pCustomSampleOrders" ::: Ptr CoarseSampleOrderCustomNV) -> IO ())
  , pVkCmdDrawMeshTasksNV :: FunPtr (Ptr CommandBuffer_T -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> IO ())
  , pVkCmdDrawMeshTasksIndirectNV :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
  , pVkCmdDrawMeshTasksIndirectCountNV :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
  , pVkCompileDeferredNV :: FunPtr (Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
  , pVkCreateAccelerationStructureNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result)
  , pVkDestroyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetAccelerationStructureMemoryRequirementsKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoKHR) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 a)) -> IO ())
  , pVkGetAccelerationStructureMemoryRequirementsNV :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a)) -> IO ())
  , pVkBindAccelerationStructureMemoryKHR :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoKHR) -> IO Result)
  , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> IO ())
  , pVkCmdCopyAccelerationStructureKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR a)) -> IO ())
  , pVkCopyAccelerationStructureKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR a)) -> IO Result)
  , pVkCmdCopyAccelerationStructureToMemoryKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR a)) -> IO ())
  , pVkCopyAccelerationStructureToMemoryKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR a)) -> IO Result)
  , pVkCmdCopyMemoryToAccelerationStructureKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR a)) -> IO ())
  , pVkCopyMemoryToAccelerationStructureKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR a)) -> IO Result)
  , pVkCmdWriteAccelerationStructuresPropertiesKHR :: FunPtr (Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ())
  , pVkCmdBuildAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ())
  , pVkWriteAccelerationStructuresPropertiesKHR :: FunPtr (Ptr Device_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: CSize) -> IO Result)
  , pVkCmdTraceRaysKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())
  , pVkCmdTraceRaysNV :: FunPtr (Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())
  , pVkGetRayTracingShaderGroupHandlesKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)
  , pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)
  , pVkGetAccelerationStructureHandleNV :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)
  , pVkCreateRayTracingPipelinesNV :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)
  , pVkCreateRayTracingPipelinesKHR :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoKHR a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)
  , pVkCmdTraceRaysIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> IO ())
  , pVkGetDeviceAccelerationStructureCompatibilityKHR :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result)
  , pVkGetImageViewHandleNVX :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32)
  , pVkGetImageViewAddressNVX :: FunPtr (Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result)
  , pVkGetDeviceGroupSurfacePresentModes2EXT :: forall a . FunPtr (Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)
  , pVkAcquireFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
  , pVkReleaseFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
  , pVkAcquireProfilingLockKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AcquireProfilingLockInfoKHR) -> IO Result)
  , pVkReleaseProfilingLockKHR :: FunPtr (Ptr Device_T -> IO ())
  , pVkGetImageDrmFormatModifierPropertiesEXT :: FunPtr (Ptr Device_T -> Image -> ("pProperties" ::: Ptr ImageDrmFormatModifierPropertiesEXT) -> IO Result)
  , pVkGetBufferOpaqueCaptureAddress :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO Word64)
  , pVkGetBufferDeviceAddress :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO DeviceAddress)
  , pVkInitializePerformanceApiINTEL :: FunPtr (Ptr Device_T -> ("pInitializeInfo" ::: Ptr InitializePerformanceApiInfoINTEL) -> IO Result)
  , pVkUninitializePerformanceApiINTEL :: FunPtr (Ptr Device_T -> IO ())
  , pVkCmdSetPerformanceMarkerINTEL :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceMarkerInfoINTEL) -> IO Result)
  , pVkCmdSetPerformanceStreamMarkerINTEL :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceStreamMarkerInfoINTEL) -> IO Result)
  , pVkCmdSetPerformanceOverrideINTEL :: FunPtr (Ptr CommandBuffer_T -> ("pOverrideInfo" ::: Ptr PerformanceOverrideInfoINTEL) -> IO Result)
  , pVkAcquirePerformanceConfigurationINTEL :: FunPtr (Ptr Device_T -> ("pAcquireInfo" ::: Ptr PerformanceConfigurationAcquireInfoINTEL) -> ("pConfiguration" ::: Ptr PerformanceConfigurationINTEL) -> IO Result)
  , pVkReleasePerformanceConfigurationINTEL :: FunPtr (Ptr Device_T -> PerformanceConfigurationINTEL -> IO Result)
  , pVkQueueSetPerformanceConfigurationINTEL :: FunPtr (Ptr Queue_T -> PerformanceConfigurationINTEL -> IO Result)
  , pVkGetPerformanceParameterINTEL :: FunPtr (Ptr Device_T -> PerformanceParameterTypeINTEL -> ("pValue" ::: Ptr PerformanceValueINTEL) -> IO Result)
  , pVkGetDeviceMemoryOpaqueCaptureAddress :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceMemoryOpaqueCaptureAddressInfo) -> IO Word64)
  , pVkGetPipelineExecutablePropertiesKHR :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pExecutableCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr PipelineExecutablePropertiesKHR) -> IO Result)
  , pVkGetPipelineExecutableStatisticsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result)
  , pVkGetPipelineExecutableInternalRepresentationsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result)
  , pVkCmdSetLineStippleEXT :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())
  , pVkCreateAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)
  , pVkCmdBuildAccelerationStructureKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR a)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO ())
  , pVkCmdBuildAccelerationStructureIndirectKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR a)) -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> IO ())
  , pVkBuildAccelerationStructureKHR :: forall a . FunPtr (Ptr Device_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR a)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO Result)
  , pVkGetAccelerationStructureDeviceAddressKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureDeviceAddressInfoKHR) -> IO DeviceAddress)
  , pVkCreateDeferredOperationKHR :: FunPtr (Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDeferredOperation" ::: Ptr DeferredOperationKHR) -> IO Result)
  , pVkDestroyDeferredOperationKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
  , pVkGetDeferredOperationMaxConcurrencyKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Word32)
  , pVkGetDeferredOperationResultKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result)
  , pVkDeferredOperationJoinKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result)
  }

deriving instance Eq DeviceCmds
deriving instance Show DeviceCmds
instance Zero DeviceCmds where
  zero = DeviceCmds
    nullPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
    nullFunPtr

foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetDeviceProcAddr
  :: FunPtr (Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) -> Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction

initDeviceCmds :: InstanceCmds -> Ptr Device_T -> IO DeviceCmds
initDeviceCmds instanceCmds handle = do
  pGetDeviceProcAddr <- castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)
      <$> getInstanceProcAddr' (instanceCmdsHandle instanceCmds) (GHC.Ptr.Ptr "vkGetDeviceProcAddr"#)
  let getDeviceProcAddr' = mkVkGetDeviceProcAddr pGetDeviceProcAddr
  vkGetDeviceProcAddr <- getDeviceProcAddr' handle (Ptr "vkGetDeviceProcAddr"#)
  vkDestroyDevice <- getDeviceProcAddr' handle (Ptr "vkDestroyDevice"#)
  vkGetDeviceQueue <- getDeviceProcAddr' handle (Ptr "vkGetDeviceQueue"#)
  vkQueueSubmit <- getDeviceProcAddr' handle (Ptr "vkQueueSubmit"#)
  vkQueueWaitIdle <- getDeviceProcAddr' handle (Ptr "vkQueueWaitIdle"#)
  vkDeviceWaitIdle <- getDeviceProcAddr' handle (Ptr "vkDeviceWaitIdle"#)
  vkAllocateMemory <- getDeviceProcAddr' handle (Ptr "vkAllocateMemory"#)
  vkFreeMemory <- getDeviceProcAddr' handle (Ptr "vkFreeMemory"#)
  vkMapMemory <- getDeviceProcAddr' handle (Ptr "vkMapMemory"#)
  vkUnmapMemory <- getDeviceProcAddr' handle (Ptr "vkUnmapMemory"#)
  vkFlushMappedMemoryRanges <- getDeviceProcAddr' handle (Ptr "vkFlushMappedMemoryRanges"#)
  vkInvalidateMappedMemoryRanges <- getDeviceProcAddr' handle (Ptr "vkInvalidateMappedMemoryRanges"#)
  vkGetDeviceMemoryCommitment <- getDeviceProcAddr' handle (Ptr "vkGetDeviceMemoryCommitment"#)
  vkGetBufferMemoryRequirements <- getDeviceProcAddr' handle (Ptr "vkGetBufferMemoryRequirements"#)
  vkBindBufferMemory <- getDeviceProcAddr' handle (Ptr "vkBindBufferMemory"#)
  vkGetImageMemoryRequirements <- getDeviceProcAddr' handle (Ptr "vkGetImageMemoryRequirements"#)
  vkBindImageMemory <- getDeviceProcAddr' handle (Ptr "vkBindImageMemory"#)
  vkGetImageSparseMemoryRequirements <- getDeviceProcAddr' handle (Ptr "vkGetImageSparseMemoryRequirements"#)
  vkQueueBindSparse <- getDeviceProcAddr' handle (Ptr "vkQueueBindSparse"#)
  vkCreateFence <- getDeviceProcAddr' handle (Ptr "vkCreateFence"#)
  vkDestroyFence <- getDeviceProcAddr' handle (Ptr "vkDestroyFence"#)
  vkResetFences <- getDeviceProcAddr' handle (Ptr "vkResetFences"#)
  vkGetFenceStatus <- getDeviceProcAddr' handle (Ptr "vkGetFenceStatus"#)
  vkWaitForFences <- getDeviceProcAddr' handle (Ptr "vkWaitForFences"#)
  vkCreateSemaphore <- getDeviceProcAddr' handle (Ptr "vkCreateSemaphore"#)
  vkDestroySemaphore <- getDeviceProcAddr' handle (Ptr "vkDestroySemaphore"#)
  vkCreateEvent <- getDeviceProcAddr' handle (Ptr "vkCreateEvent"#)
  vkDestroyEvent <- getDeviceProcAddr' handle (Ptr "vkDestroyEvent"#)
  vkGetEventStatus <- getDeviceProcAddr' handle (Ptr "vkGetEventStatus"#)
  vkSetEvent <- getDeviceProcAddr' handle (Ptr "vkSetEvent"#)
  vkResetEvent <- getDeviceProcAddr' handle (Ptr "vkResetEvent"#)
  vkCreateQueryPool <- getDeviceProcAddr' handle (Ptr "vkCreateQueryPool"#)
  vkDestroyQueryPool <- getDeviceProcAddr' handle (Ptr "vkDestroyQueryPool"#)
  vkGetQueryPoolResults <- getDeviceProcAddr' handle (Ptr "vkGetQueryPoolResults"#)
  vkResetQueryPool <- getDeviceProcAddr' handle (Ptr "vkResetQueryPool"#)
  vkCreateBuffer <- getDeviceProcAddr' handle (Ptr "vkCreateBuffer"#)
  vkDestroyBuffer <- getDeviceProcAddr' handle (Ptr "vkDestroyBuffer"#)
  vkCreateBufferView <- getDeviceProcAddr' handle (Ptr "vkCreateBufferView"#)
  vkDestroyBufferView <- getDeviceProcAddr' handle (Ptr "vkDestroyBufferView"#)
  vkCreateImage <- getDeviceProcAddr' handle (Ptr "vkCreateImage"#)
  vkDestroyImage <- getDeviceProcAddr' handle (Ptr "vkDestroyImage"#)
  vkGetImageSubresourceLayout <- getDeviceProcAddr' handle (Ptr "vkGetImageSubresourceLayout"#)
  vkCreateImageView <- getDeviceProcAddr' handle (Ptr "vkCreateImageView"#)
  vkDestroyImageView <- getDeviceProcAddr' handle (Ptr "vkDestroyImageView"#)
  vkCreateShaderModule <- getDeviceProcAddr' handle (Ptr "vkCreateShaderModule"#)
  vkDestroyShaderModule <- getDeviceProcAddr' handle (Ptr "vkDestroyShaderModule"#)
  vkCreatePipelineCache <- getDeviceProcAddr' handle (Ptr "vkCreatePipelineCache"#)
  vkDestroyPipelineCache <- getDeviceProcAddr' handle (Ptr "vkDestroyPipelineCache"#)
  vkGetPipelineCacheData <- getDeviceProcAddr' handle (Ptr "vkGetPipelineCacheData"#)
  vkMergePipelineCaches <- getDeviceProcAddr' handle (Ptr "vkMergePipelineCaches"#)
  vkCreateGraphicsPipelines <- getDeviceProcAddr' handle (Ptr "vkCreateGraphicsPipelines"#)
  vkCreateComputePipelines <- getDeviceProcAddr' handle (Ptr "vkCreateComputePipelines"#)
  vkDestroyPipeline <- getDeviceProcAddr' handle (Ptr "vkDestroyPipeline"#)
  vkCreatePipelineLayout <- getDeviceProcAddr' handle (Ptr "vkCreatePipelineLayout"#)
  vkDestroyPipelineLayout <- getDeviceProcAddr' handle (Ptr "vkDestroyPipelineLayout"#)
  vkCreateSampler <- getDeviceProcAddr' handle (Ptr "vkCreateSampler"#)
  vkDestroySampler <- getDeviceProcAddr' handle (Ptr "vkDestroySampler"#)
  vkCreateDescriptorSetLayout <- getDeviceProcAddr' handle (Ptr "vkCreateDescriptorSetLayout"#)
  vkDestroyDescriptorSetLayout <- getDeviceProcAddr' handle (Ptr "vkDestroyDescriptorSetLayout"#)
  vkCreateDescriptorPool <- getDeviceProcAddr' handle (Ptr "vkCreateDescriptorPool"#)
  vkDestroyDescriptorPool <- getDeviceProcAddr' handle (Ptr "vkDestroyDescriptorPool"#)
  vkResetDescriptorPool <- getDeviceProcAddr' handle (Ptr "vkResetDescriptorPool"#)
  vkAllocateDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkAllocateDescriptorSets"#)
  vkFreeDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkFreeDescriptorSets"#)
  vkUpdateDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkUpdateDescriptorSets"#)
  vkCreateFramebuffer <- getDeviceProcAddr' handle (Ptr "vkCreateFramebuffer"#)
  vkDestroyFramebuffer <- getDeviceProcAddr' handle (Ptr "vkDestroyFramebuffer"#)
  vkCreateRenderPass <- getDeviceProcAddr' handle (Ptr "vkCreateRenderPass"#)
  vkDestroyRenderPass <- getDeviceProcAddr' handle (Ptr "vkDestroyRenderPass"#)
  vkGetRenderAreaGranularity <- getDeviceProcAddr' handle (Ptr "vkGetRenderAreaGranularity"#)
  vkCreateCommandPool <- getDeviceProcAddr' handle (Ptr "vkCreateCommandPool"#)
  vkDestroyCommandPool <- getDeviceProcAddr' handle (Ptr "vkDestroyCommandPool"#)
  vkResetCommandPool <- getDeviceProcAddr' handle (Ptr "vkResetCommandPool"#)
  vkAllocateCommandBuffers <- getDeviceProcAddr' handle (Ptr "vkAllocateCommandBuffers"#)
  vkFreeCommandBuffers <- getDeviceProcAddr' handle (Ptr "vkFreeCommandBuffers"#)
  vkBeginCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkBeginCommandBuffer"#)
  vkEndCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkEndCommandBuffer"#)
  vkResetCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkResetCommandBuffer"#)
  vkCmdBindPipeline <- getDeviceProcAddr' handle (Ptr "vkCmdBindPipeline"#)
  vkCmdSetViewport <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewport"#)
  vkCmdSetScissor <- getDeviceProcAddr' handle (Ptr "vkCmdSetScissor"#)
  vkCmdSetLineWidth <- getDeviceProcAddr' handle (Ptr "vkCmdSetLineWidth"#)
  vkCmdSetDepthBias <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBias"#)
  vkCmdSetBlendConstants <- getDeviceProcAddr' handle (Ptr "vkCmdSetBlendConstants"#)
  vkCmdSetDepthBounds <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBounds"#)
  vkCmdSetStencilCompareMask <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilCompareMask"#)
  vkCmdSetStencilWriteMask <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilWriteMask"#)
  vkCmdSetStencilReference <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilReference"#)
  vkCmdBindDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkCmdBindDescriptorSets"#)
  vkCmdBindIndexBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdBindIndexBuffer"#)
  vkCmdBindVertexBuffers <- getDeviceProcAddr' handle (Ptr "vkCmdBindVertexBuffers"#)
  vkCmdDraw <- getDeviceProcAddr' handle (Ptr "vkCmdDraw"#)
  vkCmdDrawIndexed <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexed"#)
  vkCmdDrawIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirect"#)
  vkCmdDrawIndexedIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirect"#)
  vkCmdDispatch <- getDeviceProcAddr' handle (Ptr "vkCmdDispatch"#)
  vkCmdDispatchIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchIndirect"#)
  vkCmdCopyBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBuffer"#)
  vkCmdCopyImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImage"#)
  vkCmdBlitImage <- getDeviceProcAddr' handle (Ptr "vkCmdBlitImage"#)
  vkCmdCopyBufferToImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBufferToImage"#)
  vkCmdCopyImageToBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImageToBuffer"#)
  vkCmdUpdateBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdUpdateBuffer"#)
  vkCmdFillBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdFillBuffer"#)
  vkCmdClearColorImage <- getDeviceProcAddr' handle (Ptr "vkCmdClearColorImage"#)
  vkCmdClearDepthStencilImage <- getDeviceProcAddr' handle (Ptr "vkCmdClearDepthStencilImage"#)
  vkCmdClearAttachments <- getDeviceProcAddr' handle (Ptr "vkCmdClearAttachments"#)
  vkCmdResolveImage <- getDeviceProcAddr' handle (Ptr "vkCmdResolveImage"#)
  vkCmdSetEvent <- getDeviceProcAddr' handle (Ptr "vkCmdSetEvent"#)
  vkCmdResetEvent <- getDeviceProcAddr' handle (Ptr "vkCmdResetEvent"#)
  vkCmdWaitEvents <- getDeviceProcAddr' handle (Ptr "vkCmdWaitEvents"#)
  vkCmdPipelineBarrier <- getDeviceProcAddr' handle (Ptr "vkCmdPipelineBarrier"#)
  vkCmdBeginQuery <- getDeviceProcAddr' handle (Ptr "vkCmdBeginQuery"#)
  vkCmdEndQuery <- getDeviceProcAddr' handle (Ptr "vkCmdEndQuery"#)
  vkCmdBeginConditionalRenderingEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginConditionalRenderingEXT"#)
  vkCmdEndConditionalRenderingEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndConditionalRenderingEXT"#)
  vkCmdResetQueryPool <- getDeviceProcAddr' handle (Ptr "vkCmdResetQueryPool"#)
  vkCmdWriteTimestamp <- getDeviceProcAddr' handle (Ptr "vkCmdWriteTimestamp"#)
  vkCmdCopyQueryPoolResults <- getDeviceProcAddr' handle (Ptr "vkCmdCopyQueryPoolResults"#)
  vkCmdPushConstants <- getDeviceProcAddr' handle (Ptr "vkCmdPushConstants"#)
  vkCmdBeginRenderPass <- getDeviceProcAddr' handle (Ptr "vkCmdBeginRenderPass"#)
  vkCmdNextSubpass <- getDeviceProcAddr' handle (Ptr "vkCmdNextSubpass"#)
  vkCmdEndRenderPass <- getDeviceProcAddr' handle (Ptr "vkCmdEndRenderPass"#)
  vkCmdExecuteCommands <- getDeviceProcAddr' handle (Ptr "vkCmdExecuteCommands"#)
  vkCreateSharedSwapchainsKHR <- getDeviceProcAddr' handle (Ptr "vkCreateSharedSwapchainsKHR"#)
  vkCreateSwapchainKHR <- getDeviceProcAddr' handle (Ptr "vkCreateSwapchainKHR"#)
  vkDestroySwapchainKHR <- getDeviceProcAddr' handle (Ptr "vkDestroySwapchainKHR"#)
  vkGetSwapchainImagesKHR <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainImagesKHR"#)
  vkAcquireNextImageKHR <- getDeviceProcAddr' handle (Ptr "vkAcquireNextImageKHR"#)
  vkQueuePresentKHR <- getDeviceProcAddr' handle (Ptr "vkQueuePresentKHR"#)
  vkDebugMarkerSetObjectNameEXT <- getDeviceProcAddr' handle (Ptr "vkDebugMarkerSetObjectNameEXT"#)
  vkDebugMarkerSetObjectTagEXT <- getDeviceProcAddr' handle (Ptr "vkDebugMarkerSetObjectTagEXT"#)
  vkCmdDebugMarkerBeginEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerBeginEXT"#)
  vkCmdDebugMarkerEndEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerEndEXT"#)
  vkCmdDebugMarkerInsertEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerInsertEXT"#)
  vkGetMemoryWin32HandleNV <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleNV"#)
  vkCmdExecuteGeneratedCommandsNV <- getDeviceProcAddr' handle (Ptr "vkCmdExecuteGeneratedCommandsNV"#)
  vkCmdPreprocessGeneratedCommandsNV <- getDeviceProcAddr' handle (Ptr "vkCmdPreprocessGeneratedCommandsNV"#)
  vkCmdBindPipelineShaderGroupNV <- getDeviceProcAddr' handle (Ptr "vkCmdBindPipelineShaderGroupNV"#)
  vkGetGeneratedCommandsMemoryRequirementsNV <- getDeviceProcAddr' handle (Ptr "vkGetGeneratedCommandsMemoryRequirementsNV"#)
  vkCreateIndirectCommandsLayoutNV <- getDeviceProcAddr' handle (Ptr "vkCreateIndirectCommandsLayoutNV"#)
  vkDestroyIndirectCommandsLayoutNV <- getDeviceProcAddr' handle (Ptr "vkDestroyIndirectCommandsLayoutNV"#)
  vkCmdPushDescriptorSetKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetKHR"#)
  vkTrimCommandPool <- getDeviceProcAddr' handle (Ptr "vkTrimCommandPool"#)
  vkGetMemoryWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleKHR"#)
  vkGetMemoryWin32HandlePropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandlePropertiesKHR"#)
  vkGetMemoryFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdKHR"#)
  vkGetMemoryFdPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdPropertiesKHR"#)
  vkGetSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreWin32HandleKHR"#)
  vkImportSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreWin32HandleKHR"#)
  vkGetSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreFdKHR"#)
  vkImportSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreFdKHR"#)
  vkGetFenceWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetFenceWin32HandleKHR"#)
  vkImportFenceWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportFenceWin32HandleKHR"#)
  vkGetFenceFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetFenceFdKHR"#)
  vkImportFenceFdKHR <- getDeviceProcAddr' handle (Ptr "vkImportFenceFdKHR"#)
  vkDisplayPowerControlEXT <- getDeviceProcAddr' handle (Ptr "vkDisplayPowerControlEXT"#)
  vkRegisterDeviceEventEXT <- getDeviceProcAddr' handle (Ptr "vkRegisterDeviceEventEXT"#)
  vkRegisterDisplayEventEXT <- getDeviceProcAddr' handle (Ptr "vkRegisterDisplayEventEXT"#)
  vkGetSwapchainCounterEXT <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainCounterEXT"#)
  vkGetDeviceGroupPeerMemoryFeatures <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupPeerMemoryFeatures"#)
  vkBindBufferMemory2 <- getDeviceProcAddr' handle (Ptr "vkBindBufferMemory2"#)
  vkBindImageMemory2 <- getDeviceProcAddr' handle (Ptr "vkBindImageMemory2"#)
  vkCmdSetDeviceMask <- getDeviceProcAddr' handle (Ptr "vkCmdSetDeviceMask"#)
  vkGetDeviceGroupPresentCapabilitiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupPresentCapabilitiesKHR"#)
  vkGetDeviceGroupSurfacePresentModesKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModesKHR"#)
  vkAcquireNextImage2KHR <- getDeviceProcAddr' handle (Ptr "vkAcquireNextImage2KHR"#)
  vkCmdDispatchBase <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchBase"#)
  vkCreateDescriptorUpdateTemplate <- getDeviceProcAddr' handle (Ptr "vkCreateDescriptorUpdateTemplate"#)
  vkDestroyDescriptorUpdateTemplate <- getDeviceProcAddr' handle (Ptr "vkDestroyDescriptorUpdateTemplate"#)
  vkUpdateDescriptorSetWithTemplate <- getDeviceProcAddr' handle (Ptr "vkUpdateDescriptorSetWithTemplate"#)
  vkCmdPushDescriptorSetWithTemplateKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetWithTemplateKHR"#)
  vkSetHdrMetadataEXT <- getDeviceProcAddr' handle (Ptr "vkSetHdrMetadataEXT"#)
  vkGetSwapchainStatusKHR <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainStatusKHR"#)
  vkGetRefreshCycleDurationGOOGLE <- getDeviceProcAddr' handle (Ptr "vkGetRefreshCycleDurationGOOGLE"#)
  vkGetPastPresentationTimingGOOGLE <- getDeviceProcAddr' handle (Ptr "vkGetPastPresentationTimingGOOGLE"#)
  vkCmdSetViewportWScalingNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewportWScalingNV"#)
  vkCmdSetDiscardRectangleEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDiscardRectangleEXT"#)
  vkCmdSetSampleLocationsEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetSampleLocationsEXT"#)
  vkGetBufferMemoryRequirements2 <- getDeviceProcAddr' handle (Ptr "vkGetBufferMemoryRequirements2"#)
  vkGetImageMemoryRequirements2 <- getDeviceProcAddr' handle (Ptr "vkGetImageMemoryRequirements2"#)
  vkGetImageSparseMemoryRequirements2 <- getDeviceProcAddr' handle (Ptr "vkGetImageSparseMemoryRequirements2"#)
  vkCreateSamplerYcbcrConversion <- getDeviceProcAddr' handle (Ptr "vkCreateSamplerYcbcrConversion"#)
  vkDestroySamplerYcbcrConversion <- getDeviceProcAddr' handle (Ptr "vkDestroySamplerYcbcrConversion"#)
  vkGetDeviceQueue2 <- getDeviceProcAddr' handle (Ptr "vkGetDeviceQueue2"#)
  vkCreateValidationCacheEXT <- getDeviceProcAddr' handle (Ptr "vkCreateValidationCacheEXT"#)
  vkDestroyValidationCacheEXT <- getDeviceProcAddr' handle (Ptr "vkDestroyValidationCacheEXT"#)
  vkGetValidationCacheDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetValidationCacheDataEXT"#)
  vkMergeValidationCachesEXT <- getDeviceProcAddr' handle (Ptr "vkMergeValidationCachesEXT"#)
  vkGetDescriptorSetLayoutSupport <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetLayoutSupport"#)
  vkGetShaderInfoAMD <- getDeviceProcAddr' handle (Ptr "vkGetShaderInfoAMD"#)
  vkSetLocalDimmingAMD <- getDeviceProcAddr' handle (Ptr "vkSetLocalDimmingAMD"#)
  vkGetCalibratedTimestampsEXT <- getDeviceProcAddr' handle (Ptr "vkGetCalibratedTimestampsEXT"#)
  vkSetDebugUtilsObjectNameEXT <- getDeviceProcAddr' handle (Ptr "vkSetDebugUtilsObjectNameEXT"#)
  vkSetDebugUtilsObjectTagEXT <- getDeviceProcAddr' handle (Ptr "vkSetDebugUtilsObjectTagEXT"#)
  vkQueueBeginDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkQueueBeginDebugUtilsLabelEXT"#)
  vkQueueEndDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkQueueEndDebugUtilsLabelEXT"#)
  vkQueueInsertDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkQueueInsertDebugUtilsLabelEXT"#)
  vkCmdBeginDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginDebugUtilsLabelEXT"#)
  vkCmdEndDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndDebugUtilsLabelEXT"#)
  vkCmdInsertDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkCmdInsertDebugUtilsLabelEXT"#)
  vkGetMemoryHostPointerPropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetMemoryHostPointerPropertiesEXT"#)
  vkCmdWriteBufferMarkerAMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteBufferMarkerAMD"#)
  vkCreateRenderPass2 <- getDeviceProcAddr' handle (Ptr "vkCreateRenderPass2"#)
  vkCmdBeginRenderPass2 <- getDeviceProcAddr' handle (Ptr "vkCmdBeginRenderPass2"#)
  vkCmdNextSubpass2 <- getDeviceProcAddr' handle (Ptr "vkCmdNextSubpass2"#)
  vkCmdEndRenderPass2 <- getDeviceProcAddr' handle (Ptr "vkCmdEndRenderPass2"#)
  vkGetSemaphoreCounterValue <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreCounterValue"#)
  vkWaitSemaphores <- getDeviceProcAddr' handle (Ptr "vkWaitSemaphores"#)
  vkSignalSemaphore <- getDeviceProcAddr' handle (Ptr "vkSignalSemaphore"#)
  vkGetAndroidHardwareBufferPropertiesANDROID <- getDeviceProcAddr' handle (Ptr "vkGetAndroidHardwareBufferPropertiesANDROID"#)
  vkGetMemoryAndroidHardwareBufferANDROID <- getDeviceProcAddr' handle (Ptr "vkGetMemoryAndroidHardwareBufferANDROID"#)
  vkCmdDrawIndirectCount <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirectCount"#)
  vkCmdDrawIndexedIndirectCount <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirectCount"#)
  vkCmdSetCheckpointNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetCheckpointNV"#)
  vkGetQueueCheckpointDataNV <- getDeviceProcAddr' handle (Ptr "vkGetQueueCheckpointDataNV"#)
  vkCmdBindTransformFeedbackBuffersEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindTransformFeedbackBuffersEXT"#)
  vkCmdBeginTransformFeedbackEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginTransformFeedbackEXT"#)
  vkCmdEndTransformFeedbackEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndTransformFeedbackEXT"#)
  vkCmdBeginQueryIndexedEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginQueryIndexedEXT"#)
  vkCmdEndQueryIndexedEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndQueryIndexedEXT"#)
  vkCmdDrawIndirectByteCountEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirectByteCountEXT"#)
  vkCmdSetExclusiveScissorNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetExclusiveScissorNV"#)
  vkCmdBindShadingRateImageNV <- getDeviceProcAddr' handle (Ptr "vkCmdBindShadingRateImageNV"#)
  vkCmdSetViewportShadingRatePaletteNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewportShadingRatePaletteNV"#)
  vkCmdSetCoarseSampleOrderNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetCoarseSampleOrderNV"#)
  vkCmdDrawMeshTasksNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksNV"#)
  vkCmdDrawMeshTasksIndirectNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectNV"#)
  vkCmdDrawMeshTasksIndirectCountNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectCountNV"#)
  vkCompileDeferredNV <- getDeviceProcAddr' handle (Ptr "vkCompileDeferredNV"#)
  vkCreateAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureNV"#)
  vkDestroyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkDestroyAccelerationStructureKHR"#)
  vkGetAccelerationStructureMemoryRequirementsKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsKHR"#)
  vkGetAccelerationStructureMemoryRequirementsNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsNV"#)
  vkBindAccelerationStructureMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkBindAccelerationStructureMemoryKHR"#)
  vkCmdCopyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureNV"#)
  vkCmdCopyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureKHR"#)
  vkCopyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCopyAccelerationStructureKHR"#)
  vkCmdCopyAccelerationStructureToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureToMemoryKHR"#)
  vkCopyAccelerationStructureToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCopyAccelerationStructureToMemoryKHR"#)
  vkCmdCopyMemoryToAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToAccelerationStructureKHR"#)
  vkCopyMemoryToAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCopyMemoryToAccelerationStructureKHR"#)
  vkCmdWriteAccelerationStructuresPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkCmdWriteAccelerationStructuresPropertiesKHR"#)
  vkCmdBuildAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureNV"#)
  vkWriteAccelerationStructuresPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkWriteAccelerationStructuresPropertiesKHR"#)
  vkCmdTraceRaysKHR <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysKHR"#)
  vkCmdTraceRaysNV <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysNV"#)
  vkGetRayTracingShaderGroupHandlesKHR <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingShaderGroupHandlesKHR"#)
  vkGetRayTracingCaptureReplayShaderGroupHandlesKHR <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"#)
  vkGetAccelerationStructureHandleNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureHandleNV"#)
  vkCreateRayTracingPipelinesNV <- getDeviceProcAddr' handle (Ptr "vkCreateRayTracingPipelinesNV"#)
  vkCreateRayTracingPipelinesKHR <- getDeviceProcAddr' handle (Ptr "vkCreateRayTracingPipelinesKHR"#)
  vkCmdTraceRaysIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysIndirectKHR"#)
  vkGetDeviceAccelerationStructureCompatibilityKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceAccelerationStructureCompatibilityKHR"#)
  vkGetImageViewHandleNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewHandleNVX"#)
  vkGetImageViewAddressNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewAddressNVX"#)
  vkGetDeviceGroupSurfacePresentModes2EXT <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModes2EXT"#)
  vkAcquireFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkAcquireFullScreenExclusiveModeEXT"#)
  vkReleaseFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkReleaseFullScreenExclusiveModeEXT"#)
  vkAcquireProfilingLockKHR <- getDeviceProcAddr' handle (Ptr "vkAcquireProfilingLockKHR"#)
  vkReleaseProfilingLockKHR <- getDeviceProcAddr' handle (Ptr "vkReleaseProfilingLockKHR"#)
  vkGetImageDrmFormatModifierPropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetImageDrmFormatModifierPropertiesEXT"#)
  vkGetBufferOpaqueCaptureAddress <- getDeviceProcAddr' handle (Ptr "vkGetBufferOpaqueCaptureAddress"#)
  vkGetBufferDeviceAddress <- getDeviceProcAddr' handle (Ptr "vkGetBufferDeviceAddress"#)
  vkInitializePerformanceApiINTEL <- getDeviceProcAddr' handle (Ptr "vkInitializePerformanceApiINTEL"#)
  vkUninitializePerformanceApiINTEL <- getDeviceProcAddr' handle (Ptr "vkUninitializePerformanceApiINTEL"#)
  vkCmdSetPerformanceMarkerINTEL <- getDeviceProcAddr' handle (Ptr "vkCmdSetPerformanceMarkerINTEL"#)
  vkCmdSetPerformanceStreamMarkerINTEL <- getDeviceProcAddr' handle (Ptr "vkCmdSetPerformanceStreamMarkerINTEL"#)
  vkCmdSetPerformanceOverrideINTEL <- getDeviceProcAddr' handle (Ptr "vkCmdSetPerformanceOverrideINTEL"#)
  vkAcquirePerformanceConfigurationINTEL <- getDeviceProcAddr' handle (Ptr "vkAcquirePerformanceConfigurationINTEL"#)
  vkReleasePerformanceConfigurationINTEL <- getDeviceProcAddr' handle (Ptr "vkReleasePerformanceConfigurationINTEL"#)
  vkQueueSetPerformanceConfigurationINTEL <- getDeviceProcAddr' handle (Ptr "vkQueueSetPerformanceConfigurationINTEL"#)
  vkGetPerformanceParameterINTEL <- getDeviceProcAddr' handle (Ptr "vkGetPerformanceParameterINTEL"#)
  vkGetDeviceMemoryOpaqueCaptureAddress <- getDeviceProcAddr' handle (Ptr "vkGetDeviceMemoryOpaqueCaptureAddress"#)
  vkGetPipelineExecutablePropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutablePropertiesKHR"#)
  vkGetPipelineExecutableStatisticsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableStatisticsKHR"#)
  vkGetPipelineExecutableInternalRepresentationsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableInternalRepresentationsKHR"#)
  vkCmdSetLineStippleEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetLineStippleEXT"#)
  vkCreateAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureKHR"#)
  vkCmdBuildAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureKHR"#)
  vkCmdBuildAccelerationStructureIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureIndirectKHR"#)
  vkBuildAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkBuildAccelerationStructureKHR"#)
  vkGetAccelerationStructureDeviceAddressKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureDeviceAddressKHR"#)
  vkCreateDeferredOperationKHR <- getDeviceProcAddr' handle (Ptr "vkCreateDeferredOperationKHR"#)
  vkDestroyDeferredOperationKHR <- getDeviceProcAddr' handle (Ptr "vkDestroyDeferredOperationKHR"#)
  vkGetDeferredOperationMaxConcurrencyKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeferredOperationMaxConcurrencyKHR"#)
  vkGetDeferredOperationResultKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeferredOperationResultKHR"#)
  vkDeferredOperationJoinKHR <- getDeviceProcAddr' handle (Ptr "vkDeferredOperationJoinKHR"#)
  pure $ DeviceCmds handle
    (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)
    (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)
    (castFunPtr @_ @(Ptr Device_T -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ()) vkGetDeviceQueue)
    (castFunPtr @_ @(Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SubmitInfo _)) -> Fence -> IO Result) vkQueueSubmit)
    (castFunPtr @_ @(Ptr Queue_T -> IO Result) vkQueueWaitIdle)
    (castFunPtr @_ @(Ptr Device_T -> IO Result) vkDeviceWaitIdle)
    (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr (MemoryAllocateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMemory" ::: Ptr DeviceMemory) -> IO Result) vkAllocateMemory)
    (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkFreeMemory)
    (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("offset" ::: DeviceSize) -> DeviceSize -> MemoryMapFlags -> ("ppData" ::: Ptr (Ptr ())) -> IO Result) vkMapMemory)
    (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> IO ()) vkUnmapMemory)
    (castFunPtr @_ @(Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result) vkFlushMappedMemoryRanges)
    (castFunPtr @_ @(Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result) vkInvalidateMappedMemoryRanges)
    (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("pCommittedMemoryInBytes" ::: Ptr DeviceSize) -> IO ()) vkGetDeviceMemoryCommitment)
    (castFunPtr @_ @(Ptr Device_T -> Buffer -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ()) vkGetBufferMemoryRequirements)
    (castFunPtr @_ @(Ptr Device_T -> Buffer -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result) vkBindBufferMemory)
    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ()) vkGetImageMemoryRequirements)
    (castFunPtr @_ @(Ptr Device_T -> Image -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result) vkBindImageMemory)
    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements) -> IO ()) vkGetImageSparseMemoryRequirements)
    (castFunPtr @_ @(Ptr Queue_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr (BindSparseInfo _)) -> Fence -> IO Result) vkQueueBindSparse)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (FenceCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result) vkCreateFence)
    (castFunPtr @_ @(Ptr Device_T -> Fence -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyFence)
    (castFunPtr @_ @(Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> IO Result) vkResetFences)
    (castFunPtr @_ @(Ptr Device_T -> Fence -> IO Result) vkGetFenceStatus)
    (castFunPtr @_ @(Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> ("waitAll" ::: Bool32) -> ("timeout" ::: Word64) -> IO Result) vkWaitForFences)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SemaphoreCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSemaphore" ::: Ptr Semaphore) -> IO Result) vkCreateSemaphore)
    (castFunPtr @_ @(Ptr Device_T -> Semaphore -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySemaphore)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr EventCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pEvent" ::: Ptr Event) -> IO Result) vkCreateEvent)
    (castFunPtr @_ @(Ptr Device_T -> Event -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyEvent)
    (castFunPtr @_ @(Ptr Device_T -> Event -> IO Result) vkGetEventStatus)
    (castFunPtr @_ @(Ptr Device_T -> Event -> IO Result) vkSetEvent)
    (castFunPtr @_ @(Ptr Device_T -> Event -> IO Result) vkResetEvent)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (QueryPoolCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pQueryPool" ::: Ptr QueryPool) -> IO Result) vkCreateQueryPool)
    (castFunPtr @_ @(Ptr Device_T -> QueryPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyQueryPool)
    (castFunPtr @_ @(Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO Result) vkGetQueryPoolResults)
    (castFunPtr @_ @(Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) vkResetQueryPool)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (BufferCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pBuffer" ::: Ptr Buffer) -> IO Result) vkCreateBuffer)
    (castFunPtr @_ @(Ptr Device_T -> Buffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyBuffer)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferViewCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr BufferView) -> IO Result) vkCreateBufferView)
    (castFunPtr @_ @(Ptr Device_T -> BufferView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyBufferView)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pImage" ::: Ptr Image) -> IO Result) vkCreateImage)
    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyImage)
    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource) -> ("pLayout" ::: Ptr SubresourceLayout) -> IO ()) vkGetImageSubresourceLayout)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageViewCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr ImageView) -> IO Result) vkCreateImageView)
    (castFunPtr @_ @(Ptr Device_T -> ImageView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyImageView)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (ShaderModuleCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pShaderModule" ::: Ptr ShaderModule) -> IO Result) vkCreateShaderModule)
    (castFunPtr @_ @(Ptr Device_T -> ShaderModule -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyShaderModule)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineCache" ::: Ptr PipelineCache) -> IO Result) vkCreatePipelineCache)
    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPipelineCache)
    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetPipelineCacheData)
    (castFunPtr @_ @(Ptr Device_T -> ("dstCache" ::: PipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr PipelineCache) -> IO Result) vkMergePipelineCaches)
    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (GraphicsPipelineCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateGraphicsPipelines)
    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (ComputePipelineCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateComputePipelines)
    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPipeline)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineLayout" ::: Ptr PipelineLayout) -> IO Result) vkCreatePipelineLayout)
    (castFunPtr @_ @(Ptr Device_T -> PipelineLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPipelineLayout)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSampler" ::: Ptr Sampler) -> IO Result) vkCreateSampler)
    (castFunPtr @_ @(Ptr Device_T -> Sampler -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySampler)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSetLayout" ::: Ptr DescriptorSetLayout) -> IO Result) vkCreateDescriptorSetLayout)
    (castFunPtr @_ @(Ptr Device_T -> DescriptorSetLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorSetLayout)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorPoolCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorPool" ::: Ptr DescriptorPool) -> IO Result) vkCreateDescriptorPool)
    (castFunPtr @_ @(Ptr Device_T -> DescriptorPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorPool)
    (castFunPtr @_ @(Ptr Device_T -> DescriptorPool -> DescriptorPoolResetFlags -> IO Result) vkResetDescriptorPool)
    (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr (DescriptorSetAllocateInfo _)) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result) vkAllocateDescriptorSets)
    (castFunPtr @_ @(Ptr Device_T -> DescriptorPool -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result) vkFreeDescriptorSets)
    (castFunPtr @_ @(Ptr Device_T -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet _)) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr CopyDescriptorSet) -> IO ()) vkUpdateDescriptorSets)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (FramebufferCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFramebuffer" ::: Ptr Framebuffer) -> IO Result) vkCreateFramebuffer)
    (castFunPtr @_ @(Ptr Device_T -> Framebuffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyFramebuffer)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result) vkCreateRenderPass)
    (castFunPtr @_ @(Ptr Device_T -> RenderPass -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyRenderPass)
    (castFunPtr @_ @(Ptr Device_T -> RenderPass -> ("pGranularity" ::: Ptr Extent2D) -> IO ()) vkGetRenderAreaGranularity)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CommandPoolCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result) vkCreateCommandPool)
    (castFunPtr @_ @(Ptr Device_T -> CommandPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyCommandPool)
    (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result) vkResetCommandPool)
    (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr CommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO Result) vkAllocateCommandBuffers)
    (castFunPtr @_ @(Ptr Device_T -> CommandPool -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ()) vkFreeCommandBuffers)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBeginInfo" ::: Ptr (CommandBufferBeginInfo _)) -> IO Result) vkBeginCommandBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO Result) vkEndCommandBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result) vkResetCommandBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) vkCmdBindPipeline)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ()) vkCmdSetViewport)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetScissor)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineWidth" ::: CFloat) -> IO ()) vkCmdSetLineWidth)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()) vkCmdSetDepthBias)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (FixedArray 4 CFloat)) -> IO ()) vkCmdSetBlendConstants)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()) vkCmdSetDepthBounds)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()) vkCmdSetStencilCompareMask)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()) vkCmdSetStencilWriteMask)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("reference" ::: Word32) -> IO ()) vkCmdSetStencilReference)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()) vkCmdBindDescriptorSets)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) vkCmdBindIndexBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdBindVertexBuffers)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()) vkCmdDraw)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()) vkCmdDrawIndexed)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndirect)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirect)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDispatch)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDispatchIndirect)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferCopy) -> IO ()) vkCmdCopyBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageCopy) -> IO ()) vkCmdCopyImage)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ()) vkCmdBlitImage)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyBufferToImage)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyImageToBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdUpdateBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ()) vkCmdFillBuffer)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ()) vkCmdClearColorImage)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pDepthStencil" ::: Ptr ClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ()) vkCmdClearDepthStencilImage)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr ClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr ClearRect) -> IO ()) vkCmdClearAttachments)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageResolve) -> IO ()) vkCmdResolveImage)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdSetEvent)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdResetEvent)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier _)) -> IO ()) vkCmdWaitEvents)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier _)) -> IO ()) vkCmdPipelineBarrier)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> IO ()) vkCmdBeginQuery)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdEndQuery)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfoEXT) -> IO ()) vkCmdBeginConditionalRenderingEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndConditionalRenderingEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) vkCmdResetQueryPool)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResults)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()) vkCmdPushConstants)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo _)) -> SubpassContents -> IO ()) vkCmdBeginRenderPass)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> SubpassContents -> IO ()) vkCmdNextSubpass)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderPass)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ()) vkCmdExecuteCommands)
    (castFunPtr @_ @(Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SwapchainCreateInfoKHR _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> IO Result) vkCreateSharedSwapchainsKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SwapchainCreateInfoKHR _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchain" ::: Ptr SwapchainKHR) -> IO Result) vkCreateSwapchainKHR)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySwapchainKHR)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr Image) -> IO Result) vkGetSwapchainImagesKHR)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("timeout" ::: Word64) -> Semaphore -> Fence -> ("pImageIndex" ::: Ptr Word32) -> IO Result) vkAcquireNextImageKHR)
    (castFunPtr @_ @(Ptr Queue_T -> ("pPresentInfo" ::: Ptr (PresentInfoKHR _)) -> IO Result) vkQueuePresentKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pNameInfo" ::: Ptr DebugMarkerObjectNameInfoEXT) -> IO Result) vkDebugMarkerSetObjectNameEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pTagInfo" ::: Ptr DebugMarkerObjectTagInfoEXT) -> IO Result) vkDebugMarkerSetObjectTagEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ()) vkCmdDebugMarkerBeginEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdDebugMarkerEndEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ()) vkCmdDebugMarkerInsertEXT)
    (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("isPreprocessed" ::: Bool32) -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ()) vkCmdExecuteGeneratedCommandsNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ()) vkCmdPreprocessGeneratedCommandsNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> ("groupIndex" ::: Word32) -> IO ()) vkCmdBindPipelineShaderGroupNV)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr GeneratedCommandsMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetGeneratedCommandsMemoryRequirementsNV)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNV) -> IO Result) vkCreateIndirectCommandsLayoutNV)
    (castFunPtr @_ @(Ptr Device_T -> IndirectCommandsLayoutNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyIndirectCommandsLayoutNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet _)) -> IO ()) vkCmdPushDescriptorSetKHR)
    (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()) vkTrimCommandPool)
    (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleKHR)
    (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result) vkGetMemoryWin32HandlePropertiesKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr MemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetMemoryFdKHR)
    (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result) vkGetMemoryFdPropertiesKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr SemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetSemaphoreWin32HandleKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr ImportSemaphoreWin32HandleInfoKHR) -> IO Result) vkImportSemaphoreWin32HandleKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr SemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetSemaphoreFdKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreFdInfo" ::: Ptr ImportSemaphoreFdInfoKHR) -> IO Result) vkImportSemaphoreFdKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr FenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetFenceWin32HandleKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pImportFenceWin32HandleInfo" ::: Ptr ImportFenceWin32HandleInfoKHR) -> IO Result) vkImportFenceWin32HandleKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr FenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetFenceFdKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pImportFenceFdInfo" ::: Ptr ImportFenceFdInfoKHR) -> IO Result) vkImportFenceFdKHR)
    (castFunPtr @_ @(Ptr Device_T -> DisplayKHR -> ("pDisplayPowerInfo" ::: Ptr DisplayPowerInfoEXT) -> IO Result) vkDisplayPowerControlEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pDeviceEventInfo" ::: Ptr DeviceEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result) vkRegisterDeviceEventEXT)
    (castFunPtr @_ @(Ptr Device_T -> DisplayKHR -> ("pDisplayEventInfo" ::: Ptr DisplayEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result) vkRegisterDisplayEventEXT)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> ("pCounterValue" ::: Ptr Word64) -> IO Result) vkGetSwapchainCounterEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr PeerMemoryFeatureFlags) -> IO ()) vkGetDeviceGroupPeerMemoryFeatures)
    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindBufferMemoryInfo _)) -> IO Result) vkBindBufferMemory2)
    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindImageMemoryInfo _)) -> IO Result) vkBindImageMemory2)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("deviceMask" ::: Word32) -> IO ()) vkCmdSetDeviceMask)
    (castFunPtr @_ @(Ptr Device_T -> ("pDeviceGroupPresentCapabilities" ::: Ptr DeviceGroupPresentCapabilitiesKHR) -> IO Result) vkGetDeviceGroupPresentCapabilitiesKHR)
    (castFunPtr @_ @(Ptr Device_T -> SurfaceKHR -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModesKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pAcquireInfo" ::: Ptr AcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO Result) vkAcquireNextImage2KHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDispatchBase)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr DescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr DescriptorUpdateTemplate) -> IO Result) vkCreateDescriptorUpdateTemplate)
    (castFunPtr @_ @(Ptr Device_T -> DescriptorUpdateTemplate -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorUpdateTemplate)
    (castFunPtr @_ @(Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> ("pData" ::: Ptr ()) -> IO ()) vkUpdateDescriptorSetWithTemplate)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdPushDescriptorSetWithTemplateKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> ("pMetadata" ::: Ptr HdrMetadataEXT) -> IO ()) vkSetHdrMetadataEXT)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkGetSwapchainStatusKHR)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pDisplayTimingProperties" ::: Ptr RefreshCycleDurationGOOGLE) -> IO Result) vkGetRefreshCycleDurationGOOGLE)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr PastPresentationTimingGOOGLE) -> IO Result) vkGetPastPresentationTimingGOOGLE)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr ViewportWScalingNV) -> IO ()) vkCmdSetViewportWScalingNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr Rect2D) -> IO ()) vkCmdSetDiscardRectangleEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSampleLocationsInfo" ::: Ptr SampleLocationsInfoEXT) -> IO ()) vkCmdSetSampleLocationsEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetBufferMemoryRequirements2)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (ImageMemoryRequirementsInfo2 _)) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetImageMemoryRequirements2)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ()) vkGetImageSparseMemoryRequirements2)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerYcbcrConversionCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr SamplerYcbcrConversion) -> IO Result) vkCreateSamplerYcbcrConversion)
    (castFunPtr @_ @(Ptr Device_T -> SamplerYcbcrConversion -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySamplerYcbcrConversion)
    (castFunPtr @_ @(Ptr Device_T -> ("pQueueInfo" ::: Ptr DeviceQueueInfo2) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ()) vkGetDeviceQueue2)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO Result) vkCreateValidationCacheEXT)
    (castFunPtr @_ @(Ptr Device_T -> ValidationCacheEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyValidationCacheEXT)
    (castFunPtr @_ @(Ptr Device_T -> ValidationCacheEXT -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetValidationCacheDataEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("dstCache" ::: ValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr ValidationCacheEXT) -> IO Result) vkMergeValidationCachesEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo _)) -> ("pSupport" ::: Ptr (DescriptorSetLayoutSupport _)) -> IO ()) vkGetDescriptorSetLayoutSupport)
    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO Result) vkGetShaderInfoAMD)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("localDimmingEnable" ::: Bool32) -> IO ()) vkSetLocalDimmingAMD)
    (castFunPtr @_ @(Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr CalibratedTimestampInfoEXT) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result) vkGetCalibratedTimestampsEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pNameInfo" ::: Ptr DebugUtilsObjectNameInfoEXT) -> IO Result) vkSetDebugUtilsObjectNameEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pTagInfo" ::: Ptr DebugUtilsObjectTagInfoEXT) -> IO Result) vkSetDebugUtilsObjectTagEXT)
    (castFunPtr @_ @(Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkQueueBeginDebugUtilsLabelEXT)
    (castFunPtr @_ @(Ptr Queue_T -> IO ()) vkQueueEndDebugUtilsLabelEXT)
    (castFunPtr @_ @(Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkQueueInsertDebugUtilsLabelEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkCmdBeginDebugUtilsLabelEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndDebugUtilsLabelEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkCmdInsertDebugUtilsLabelEXT)
    (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr MemoryHostPointerPropertiesEXT) -> IO Result) vkGetMemoryHostPointerPropertiesEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlagBits -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()) vkCmdWriteBufferMarkerAMD)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo2 _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result) vkCreateRenderPass2)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo _)) -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> IO ()) vkCmdBeginRenderPass2)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ()) vkCmdNextSubpass2)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ()) vkCmdEndRenderPass2)
    (castFunPtr @_ @(Ptr Device_T -> Semaphore -> ("pValue" ::: Ptr Word64) -> IO Result) vkGetSemaphoreCounterValue)
    (castFunPtr @_ @(Ptr Device_T -> ("pWaitInfo" ::: Ptr SemaphoreWaitInfo) -> ("timeout" ::: Word64) -> IO Result) vkWaitSemaphores)
    (castFunPtr @_ @(Ptr Device_T -> ("pSignalInfo" ::: Ptr SemaphoreSignalInfo) -> IO Result) vkSignalSemaphore)
    (castFunPtr @_ @(Ptr Device_T -> Ptr AHardwareBuffer -> ("pProperties" ::: Ptr (AndroidHardwareBufferPropertiesANDROID _)) -> IO Result) vkGetAndroidHardwareBufferPropertiesANDROID)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr MemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO Result) vkGetMemoryAndroidHardwareBufferANDROID)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndirectCount)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirectCount)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCheckpointMarker" ::: Ptr ()) -> IO ()) vkCmdSetCheckpointNV)
    (castFunPtr @_ @(Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointDataNV) -> IO ()) vkGetQueueCheckpointDataNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> IO ()) vkCmdBindTransformFeedbackBuffersEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdBeginTransformFeedbackEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdEndTransformFeedbackEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> IO ()) vkCmdBeginQueryIndexedEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> IO ()) vkCmdEndQueryIndexedEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ()) vkCmdDrawIndirectByteCountEXT)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissorCount" ::: Word32) -> ("pExclusiveScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetExclusiveScissorNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ()) vkCmdBindShadingRateImageNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pShadingRatePalettes" ::: Ptr ShadingRatePaletteNV) -> IO ()) vkCmdSetViewportShadingRatePaletteNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> CoarseSampleOrderTypeNV -> ("customSampleOrderCount" ::: Word32) -> ("pCustomSampleOrders" ::: Ptr CoarseSampleOrderCustomNV) -> IO ()) vkCmdSetCoarseSampleOrderNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> IO ()) vkCmdDrawMeshTasksNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectCountNV)
    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result) vkCompileDeferredNV)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result) vkCreateAccelerationStructureNV)
    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoKHR) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR _)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsNV)
    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoKHR) -> IO Result) vkBindAccelerationStructureMemoryKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> IO ()) vkCmdCopyAccelerationStructureNV)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR _)) -> IO ()) vkCmdCopyAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR _)) -> IO Result) vkCopyAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR _)) -> IO ()) vkCmdCopyAccelerationStructureToMemoryKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR _)) -> IO Result) vkCopyAccelerationStructureToMemoryKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR _)) -> IO ()) vkCmdCopyMemoryToAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR _)) -> IO Result) vkCopyMemoryToAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()) vkCmdWriteAccelerationStructuresPropertiesKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()) vkCmdBuildAccelerationStructureNV)
    (castFunPtr @_ @(Ptr Device_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: CSize) -> IO Result) vkWriteAccelerationStructuresPropertiesKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysNV)
    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingShaderGroupHandlesKHR)
    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)
    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureHandleNV)
    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesNV)
    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoKHR _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdTraceRaysIndirectKHR)
    (castFunPtr @_ @(Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result) vkGetDeviceAccelerationStructureCompatibilityKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32) vkGetImageViewHandleNVX)
    (castFunPtr @_ @(Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result) vkGetImageViewAddressNVX)
    (castFunPtr @_ @(Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModes2EXT)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkAcquireFullScreenExclusiveModeEXT)
    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkReleaseFullScreenExclusiveModeEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AcquireProfilingLockInfoKHR) -> IO Result) vkAcquireProfilingLockKHR)
    (castFunPtr @_ @(Ptr Device_T -> IO ()) vkReleaseProfilingLockKHR)
    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pProperties" ::: Ptr ImageDrmFormatModifierPropertiesEXT) -> IO Result) vkGetImageDrmFormatModifierPropertiesEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO Word64) vkGetBufferOpaqueCaptureAddress)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO DeviceAddress) vkGetBufferDeviceAddress)
    (castFunPtr @_ @(Ptr Device_T -> ("pInitializeInfo" ::: Ptr InitializePerformanceApiInfoINTEL) -> IO Result) vkInitializePerformanceApiINTEL)
    (castFunPtr @_ @(Ptr Device_T -> IO ()) vkUninitializePerformanceApiINTEL)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceMarkerInfoINTEL) -> IO Result) vkCmdSetPerformanceMarkerINTEL)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceStreamMarkerInfoINTEL) -> IO Result) vkCmdSetPerformanceStreamMarkerINTEL)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pOverrideInfo" ::: Ptr PerformanceOverrideInfoINTEL) -> IO Result) vkCmdSetPerformanceOverrideINTEL)
    (castFunPtr @_ @(Ptr Device_T -> ("pAcquireInfo" ::: Ptr PerformanceConfigurationAcquireInfoINTEL) -> ("pConfiguration" ::: Ptr PerformanceConfigurationINTEL) -> IO Result) vkAcquirePerformanceConfigurationINTEL)
    (castFunPtr @_ @(Ptr Device_T -> PerformanceConfigurationINTEL -> IO Result) vkReleasePerformanceConfigurationINTEL)
    (castFunPtr @_ @(Ptr Queue_T -> PerformanceConfigurationINTEL -> IO Result) vkQueueSetPerformanceConfigurationINTEL)
    (castFunPtr @_ @(Ptr Device_T -> PerformanceParameterTypeINTEL -> ("pValue" ::: Ptr PerformanceValueINTEL) -> IO Result) vkGetPerformanceParameterINTEL)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceMemoryOpaqueCaptureAddressInfo) -> IO Word64) vkGetDeviceMemoryOpaqueCaptureAddress)
    (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pExecutableCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr PipelineExecutablePropertiesKHR) -> IO Result) vkGetPipelineExecutablePropertiesKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result) vkGetPipelineExecutableStatisticsKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result) vkGetPipelineExecutableInternalRepresentationsKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStippleEXT)
    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO ()) vkCmdBuildAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> IO ()) vkCmdBuildAccelerationStructureIndirectKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO Result) vkBuildAccelerationStructureKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureDeviceAddressInfoKHR) -> IO DeviceAddress) vkGetAccelerationStructureDeviceAddressKHR)
    (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDeferredOperation" ::: Ptr DeferredOperationKHR) -> IO Result) vkCreateDeferredOperationKHR)
    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDeferredOperationKHR)
    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Word32) vkGetDeferredOperationMaxConcurrencyKHR)
    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Result) vkGetDeferredOperationResultKHR)
    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Result) vkDeferredOperationJoinKHR)