{-# OPTIONS_GHC -fno-warn-orphans#-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE CPP                      #-}
{-# LANGUAGE DataKinds                #-}
{-# LANGUAGE FlexibleInstances        #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash                #-}
{-# LANGUAGE PatternSynonyms          #-}
{-# LANGUAGE Strict                   #-}
{-# LANGUAGE TypeApplications         #-}
{-# LANGUAGE TypeFamilies             #-}
{-# LANGUAGE ViewPatterns             #-}
module Graphics.Vulkan.Ext.VK_KHR_swapchain
       (AHardwareBuffer(), ANativeWindow(), CAMetalLayer(), VkBool32(..),
        VkDeviceAddress(..), VkDeviceSize(..), VkFlags(..),
        VkSampleMask(..), pattern VK_COLORSPACE_SRGB_NONLINEAR_KHR,
        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
        VkColorComponentFlagBits(), VkColorComponentFlags(),
        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
        VkCompositeAlphaFlagsKHR(), VkExtent2D, VkFormat(..),
        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
        VkImageAspectFlagBits(), VkImageAspectFlags(),
        VkImageCreateFlagBits(), VkImageCreateFlags(),
        VkImageUsageFlagBits(), VkImageUsageFlags(),
        VkImageViewCreateBitmask(..), VkImageViewCreateFlagBits(),
        VkImageViewCreateFlags(), VkPresentInfoKHR, VkPresentModeKHR(..),
        VkResult(..), VkSharingMode(..), VkStructureType(..),
        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
        VkSwapchainImageUsageBitmaskANDROID(..),
        VkSwapchainCreateBitmaskKHR(..), VkSwapchainCreateFlagBitsKHR(),
        VkSwapchainCreateFlagsKHR(),
        VkSwapchainImageUsageFlagBitsANDROID(),
        VkSwapchainImageUsageFlagsANDROID(), VkSwapchainCreateInfoKHR,
        -- > #include "vk_platform.h"
        VkCreateSwapchainKHR, pattern VkCreateSwapchainKHR,
        HS_vkCreateSwapchainKHR, PFN_vkCreateSwapchainKHR,
        vkCreateSwapchainKHR, vkCreateSwapchainKHRUnsafe,
        vkCreateSwapchainKHRSafe, VkDestroySwapchainKHR,
        pattern VkDestroySwapchainKHR, HS_vkDestroySwapchainKHR,
        PFN_vkDestroySwapchainKHR, vkDestroySwapchainKHR,
        vkDestroySwapchainKHRUnsafe, vkDestroySwapchainKHRSafe,
        VkGetSwapchainImagesKHR, pattern VkGetSwapchainImagesKHR,
        HS_vkGetSwapchainImagesKHR, PFN_vkGetSwapchainImagesKHR,
        vkGetSwapchainImagesKHR, vkGetSwapchainImagesKHRUnsafe,
        vkGetSwapchainImagesKHRSafe, VkAcquireNextImageKHR,
        pattern VkAcquireNextImageKHR, HS_vkAcquireNextImageKHR,
        PFN_vkAcquireNextImageKHR, vkAcquireNextImageKHR,
        vkAcquireNextImageKHRUnsafe, vkAcquireNextImageKHRSafe,
        VkQueuePresentKHR, pattern VkQueuePresentKHR, HS_vkQueuePresentKHR,
        PFN_vkQueuePresentKHR, vkQueuePresentKHR, vkQueuePresentKHRUnsafe,
        vkQueuePresentKHRSafe, module Graphics.Vulkan.Marshal,
        VkInternalAllocationType(..), VkSystemAllocationScope(..),
        newVkAllocationFunction, newVkDebugReportCallbackEXT,
        newVkDebugUtilsMessengerCallbackEXT, newVkFreeFunction,
        newVkInternalAllocationNotification, newVkInternalFreeNotification,
        newVkReallocationFunction, newVkVoidFunction,
        unwrapVkAllocationFunction, unwrapVkDebugReportCallbackEXT,
        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
        unwrapVkInternalAllocationNotification,
        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
        unwrapVkVoidFunction, HS_vkAllocationFunction,
        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
        HS_vkVoidFunction, PFN_vkAllocationFunction,
        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
        PFN_vkVoidFunction, VkAccelerationStructureKHR,
        VkAccelerationStructureKHR_T(), VkAccelerationStructureNV,
        VkAccelerationStructureNV_T(), VkBuffer, VkBufferView,
        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
        VkDeferredOperationKHR, VkDeferredOperationKHR_T(),
        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
        VkImageView, VkImageView_T(), VkImage_T(),
        VkIndirectCommandsLayoutNV, VkIndirectCommandsLayoutNV_T(),
        VkInstance, VkInstance_T(), VkPerformanceConfigurationINTEL,
        VkPerformanceConfigurationINTEL_T(), VkPhysicalDevice,
        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
        VkPipeline_T(), VkPrivateDataSlotEXT, VkPrivateDataSlotEXT_T(),
        VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(), VkRenderPass,
        VkRenderPass_T(), VkSampler, VkSamplerYcbcrConversion,
        VkSamplerYcbcrConversionKHR, VkSamplerYcbcrConversionKHR_T(),
        VkSamplerYcbcrConversion_T(), VkSampler_T(), VkSemaphore,
        VkSemaphore_T(), VkShaderModule, VkShaderModule_T(), VkSurfaceKHR,
        VkSurfaceKHR_T(), VkSwapchainKHR, VkSwapchainKHR_T(),
        VkValidationCacheEXT, VkValidationCacheEXT_T(),
        VkAllocationCallbacks, VkExtent3D, VkPresentRegionKHR,
        VkPresentRegionsKHR, VkPresentTimeGOOGLE, VkPresentTimesInfoGOOGLE,
        VkSwapchainCounterCreateInfoEXT,
        VkSwapchainDisplayNativeHdrCreateInfoAMD,
        VK_KHR_SWAPCHAIN_SPEC_VERSION,
        pattern VK_KHR_SWAPCHAIN_SPEC_VERSION,
        VK_KHR_SWAPCHAIN_EXTENSION_NAME,
        pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
        pattern VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, pattern VK_SUBOPTIMAL_KHR,
        pattern VK_ERROR_OUT_OF_DATE_KHR,
        pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR, -- ** Required extensions: 'VK_KHR_surface'.
                                              VkAcquireNextImageInfoKHR,
        VkBindImageMemoryInfo, VkBindImageMemorySwapchainInfoKHR,
        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
        VkDeviceDiagnosticsConfigBitmaskNV(..), VkDeviceEventTypeEXT(..),
        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
        VkDeviceDiagnosticsConfigFlagBitsNV(),
        VkDeviceDiagnosticsConfigFlagsNV(),
        VkDeviceGroupPresentModeFlagBitsKHR(),
        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
        VkDeviceGroupSwapchainCreateInfoKHR, VkImageCreateInfo,
        VkImageSwapchainCreateInfoKHR, VkSampleCountBitmask(..),
        VkSampleCountFlagBits(), VkSampleCountFlags(),
        -- > #include "vk_platform.h"
        VkGetDeviceGroupPresentCapabilitiesKHR,
        pattern VkGetDeviceGroupPresentCapabilitiesKHR,
        HS_vkGetDeviceGroupPresentCapabilitiesKHR,
        PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
        vkGetDeviceGroupPresentCapabilitiesKHR,
        vkGetDeviceGroupPresentCapabilitiesKHRUnsafe,
        vkGetDeviceGroupPresentCapabilitiesKHRSafe,
        VkGetDeviceGroupSurfacePresentModesKHR,
        pattern VkGetDeviceGroupSurfacePresentModesKHR,
        HS_vkGetDeviceGroupSurfacePresentModesKHR,
        PFN_vkGetDeviceGroupSurfacePresentModesKHR,
        vkGetDeviceGroupSurfacePresentModesKHR,
        vkGetDeviceGroupSurfacePresentModesKHRUnsafe,
        vkGetDeviceGroupSurfacePresentModesKHRSafe,
        VkGetPhysicalDevicePresentRectanglesKHR,
        pattern VkGetPhysicalDevicePresentRectanglesKHR,
        HS_vkGetPhysicalDevicePresentRectanglesKHR,
        PFN_vkGetPhysicalDevicePresentRectanglesKHR,
        vkGetPhysicalDevicePresentRectanglesKHR,
        vkGetPhysicalDevicePresentRectanglesKHRUnsafe,
        vkGetPhysicalDevicePresentRectanglesKHRSafe,
        VkAcquireNextImage2KHR, pattern VkAcquireNextImage2KHR,
        HS_vkAcquireNextImage2KHR, PFN_vkAcquireNextImage2KHR,
        vkAcquireNextImage2KHR, vkAcquireNextImage2KHRUnsafe,
        vkAcquireNextImage2KHRSafe, VkAcquireProfilingLockInfoKHR,
        VkDeviceCreateInfo, VkDeviceDiagnosticsConfigCreateInfoNV,
        VkDeviceEventInfoEXT, VkDeviceGroupBindSparseInfo,
        VkDeviceGroupBindSparseInfoKHR,
        VkDeviceGroupCommandBufferBeginInfo,
        VkDeviceGroupCommandBufferBeginInfoKHR,
        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
        VkDeviceGroupRenderPassBeginInfo,
        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
        VkDeviceGroupSubmitInfoKHR, VkDeviceMemoryOpaqueCaptureAddressInfo,
        VkDeviceMemoryOpaqueCaptureAddressInfoKHR,
        VkDeviceMemoryOverallocationCreateInfoAMD,
        VkDevicePrivateDataCreateInfoEXT, VkDeviceQueueCreateInfo,
        VkDeviceQueueGlobalPriorityCreateInfoEXT, VkDeviceQueueInfo2,
        VkOffset2D, VkOffset3D, VkRect2D, VkRectLayerKHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
        pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
        pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
        pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR)
       where
import GHC.Ptr                                           (Ptr (..))
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Proc
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Enum.Color
import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR
import Graphics.Vulkan.Types.Enum.Device
import Graphics.Vulkan.Types.Enum.Format
import Graphics.Vulkan.Types.Enum.Image
import Graphics.Vulkan.Types.Enum.InternalAllocationType
import Graphics.Vulkan.Types.Enum.ObjectType             (VkObjectType (..))
import Graphics.Vulkan.Types.Enum.PresentModeKHR
import Graphics.Vulkan.Types.Enum.Result
import Graphics.Vulkan.Types.Enum.SampleCountFlags
import Graphics.Vulkan.Types.Enum.SharingMode
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Enum.Surface
import Graphics.Vulkan.Types.Enum.Swapchain
import Graphics.Vulkan.Types.Enum.SystemAllocationScope
import Graphics.Vulkan.Types.Funcpointers
import Graphics.Vulkan.Types.Handles
import Graphics.Vulkan.Types.Struct.Acquire
import Graphics.Vulkan.Types.Struct.AllocationCallbacks
import Graphics.Vulkan.Types.Struct.Bind                 (VkBindImageMemoryInfo, VkBindImageMemorySwapchainInfoKHR)
import Graphics.Vulkan.Types.Struct.Device
import Graphics.Vulkan.Types.Struct.Extent
import Graphics.Vulkan.Types.Struct.Image                (VkImageCreateInfo, VkImageSwapchainCreateInfoKHR)
import Graphics.Vulkan.Types.Struct.Offset
import Graphics.Vulkan.Types.Struct.Present
import Graphics.Vulkan.Types.Struct.Rect
import Graphics.Vulkan.Types.Struct.Swapchain
import System.IO.Unsafe                                  (unsafeDupablePerformIO)

pattern VkCreateSwapchainKHR :: CString

pattern $bVkCreateSwapchainKHR :: CString
$mVkCreateSwapchainKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCreateSwapchainKHR <- (is_VkCreateSwapchainKHR -> True)
  where
    VkCreateSwapchainKHR = CString
_VkCreateSwapchainKHR

{-# INLINE _VkCreateSwapchainKHR #-}

_VkCreateSwapchainKHR :: CString
_VkCreateSwapchainKHR :: CString
_VkCreateSwapchainKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCreateSwapchainKHR\NUL"#

{-# INLINE is_VkCreateSwapchainKHR #-}

is_VkCreateSwapchainKHR :: CString -> Bool
is_VkCreateSwapchainKHR :: CString -> Bool
is_VkCreateSwapchainKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCreateSwapchainKHR

type VkCreateSwapchainKHR = "vkCreateSwapchainKHR"

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_ERROR_INITIALIZATION_FAILED'.
--
-- > VkResult vkCreateSwapchainKHR
-- >     ( VkDevice device
-- >     , const VkSwapchainCreateInfoKHR* pCreateInfo
-- >     , const VkAllocationCallbacks* pAllocator
-- >     , VkSwapchainKHR* pSwapchain
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
--
-- or less efficient:
--
-- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
--
-- __Note:__ @vkCreateSwapchainKHRUnsafe@ and @vkCreateSwapchainKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkCreateSwapchainKHR@ is an alias
--           of @vkCreateSwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkCreateSwapchainKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall unsafe "vkCreateSwapchainKHR"
               vkCreateSwapchainKHRUnsafe ::
               VkDevice -- ^ device
                        ->
                 Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
                                              ->
                   Ptr VkAllocationCallbacks -- ^ pAllocator
                                             -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                   -> IO VkResult

#else
vkCreateSwapchainKHRUnsafe ::
                           VkDevice -- ^ device
                                    ->
                             Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
                                                          ->
                               Ptr VkAllocationCallbacks -- ^ pAllocator
                                                         -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                               -> IO VkResult
vkCreateSwapchainKHRUnsafe :: VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
vkCreateSwapchainKHRUnsafe
  = IO
  (VkDevice
   -> Ptr VkSwapchainCreateInfoKHR
   -> Ptr VkAllocationCallbacks
   -> Ptr VkSwapchainKHR
   -> IO VkResult)
-> VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkCreateSwapchainKHR)

{-# NOINLINE vkCreateSwapchainKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_ERROR_INITIALIZATION_FAILED'.
--
-- > VkResult vkCreateSwapchainKHR
-- >     ( VkDevice device
-- >     , const VkSwapchainCreateInfoKHR* pCreateInfo
-- >     , const VkAllocationCallbacks* pAllocator
-- >     , VkSwapchainKHR* pSwapchain
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
--
-- or less efficient:
--
-- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
--
-- __Note:__ @vkCreateSwapchainKHRUnsafe@ and @vkCreateSwapchainKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkCreateSwapchainKHR@ is an alias
--           of @vkCreateSwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkCreateSwapchainKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall safe "vkCreateSwapchainKHR"
               vkCreateSwapchainKHRSafe ::
               VkDevice -- ^ device
                        ->
                 Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
                                              ->
                   Ptr VkAllocationCallbacks -- ^ pAllocator
                                             -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                   -> IO VkResult

#else
vkCreateSwapchainKHRSafe ::
                         VkDevice -- ^ device
                                  ->
                           Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
                                                        ->
                             Ptr VkAllocationCallbacks -- ^ pAllocator
                                                       -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                             -> IO VkResult
vkCreateSwapchainKHRSafe :: VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
vkCreateSwapchainKHRSafe
  = IO
  (VkDevice
   -> Ptr VkSwapchainCreateInfoKHR
   -> Ptr VkAllocationCallbacks
   -> Ptr VkSwapchainKHR
   -> IO VkResult)
-> VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkCreateSwapchainKHR)

{-# NOINLINE vkCreateSwapchainKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_ERROR_INITIALIZATION_FAILED'.
--
-- > VkResult vkCreateSwapchainKHR
-- >     ( VkDevice device
-- >     , const VkSwapchainCreateInfoKHR* pCreateInfo
-- >     , const VkAllocationCallbacks* pAllocator
-- >     , VkSwapchainKHR* pSwapchain
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
--
-- or less efficient:
--
-- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
--
-- __Note:__ @vkCreateSwapchainKHRUnsafe@ and @vkCreateSwapchainKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkCreateSwapchainKHR@ is an alias
--           of @vkCreateSwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkCreateSwapchainKHRSafe@.
--
vkCreateSwapchainKHR ::
                     VkDevice -- ^ device
                              ->
                       Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
                                                    ->
                         Ptr VkAllocationCallbacks -- ^ pAllocator
                                                   -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                         -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkCreateSwapchainKHR = vkCreateSwapchainKHRUnsafe
#else
vkCreateSwapchainKHR :: VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
vkCreateSwapchainKHR = VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
vkCreateSwapchainKHRSafe

#endif
{-# INLINE vkCreateSwapchainKHR #-}

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_ERROR_INITIALIZATION_FAILED'.
--
--   > VkResult vkCreateSwapchainKHR
--   >     ( VkDevice device
--   >     , const VkSwapchainCreateInfoKHR* pCreateInfo
--   >     , const VkAllocationCallbacks* pAllocator
--   >     , VkSwapchainKHR* pSwapchain
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
type HS_vkCreateSwapchainKHR =
     VkDevice -- ^ device
              ->
       Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
                                    ->
         Ptr VkAllocationCallbacks -- ^ pAllocator
                                   -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                         -> IO VkResult

type PFN_vkCreateSwapchainKHR = FunPtr HS_vkCreateSwapchainKHR

foreign import ccall unsafe "dynamic"
               unwrapVkCreateSwapchainKHRUnsafe ::
               PFN_vkCreateSwapchainKHR -> HS_vkCreateSwapchainKHR

foreign import ccall safe "dynamic" unwrapVkCreateSwapchainKHRSafe
               :: PFN_vkCreateSwapchainKHR -> HS_vkCreateSwapchainKHR

instance VulkanProc "vkCreateSwapchainKHR" where
    type VkProcType "vkCreateSwapchainKHR" = HS_vkCreateSwapchainKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCreateSwapchainKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkCreateSwapchainKHR)
-> VkProcType VkCreateSwapchainKHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkCreateSwapchainKHR)
-> VkProcType VkCreateSwapchainKHR
PFN_vkCreateSwapchainKHR
-> VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
unwrapVkCreateSwapchainKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkCreateSwapchainKHR)
-> VkProcType VkCreateSwapchainKHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkCreateSwapchainKHR)
-> VkProcType VkCreateSwapchainKHR
PFN_vkCreateSwapchainKHR
-> VkDevice
-> Ptr VkSwapchainCreateInfoKHR
-> Ptr VkAllocationCallbacks
-> Ptr VkSwapchainKHR
-> IO VkResult
unwrapVkCreateSwapchainKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkDestroySwapchainKHR :: CString

pattern $bVkDestroySwapchainKHR :: CString
$mVkDestroySwapchainKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkDestroySwapchainKHR <- (is_VkDestroySwapchainKHR -> True)
  where
    VkDestroySwapchainKHR = CString
_VkDestroySwapchainKHR

{-# INLINE _VkDestroySwapchainKHR #-}

_VkDestroySwapchainKHR :: CString
_VkDestroySwapchainKHR :: CString
_VkDestroySwapchainKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkDestroySwapchainKHR\NUL"#

{-# INLINE is_VkDestroySwapchainKHR #-}

is_VkDestroySwapchainKHR :: CString -> Bool
is_VkDestroySwapchainKHR :: CString -> Bool
is_VkDestroySwapchainKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkDestroySwapchainKHR

type VkDestroySwapchainKHR = "vkDestroySwapchainKHR"

-- |
-- > void vkDestroySwapchainKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , const VkAllocationCallbacks* pAllocator
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myDestroySwapchainKHR <- vkGetDeviceProc @VkDestroySwapchainKHR vkDevice
--
-- or less efficient:
--
-- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
--
-- __Note:__ @vkDestroySwapchainKHRUnsafe@ and @vkDestroySwapchainKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkDestroySwapchainKHR@ is an alias
--           of @vkDestroySwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkDestroySwapchainKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall unsafe "vkDestroySwapchainKHR"
               vkDestroySwapchainKHRUnsafe ::
               VkDevice -- ^ device
                        -> VkSwapchainKHR -- ^ swapchain
                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                       -> IO ()

#else
vkDestroySwapchainKHRUnsafe ::
                            VkDevice -- ^ device
                                     -> VkSwapchainKHR -- ^ swapchain
                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                                    -> IO ()
vkDestroySwapchainKHRUnsafe :: VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
vkDestroySwapchainKHRUnsafe
  = IO
  (VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ())
-> VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkDestroySwapchainKHR)

{-# NOINLINE vkDestroySwapchainKHRUnsafe #-}
#endif

-- |
-- > void vkDestroySwapchainKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , const VkAllocationCallbacks* pAllocator
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myDestroySwapchainKHR <- vkGetDeviceProc @VkDestroySwapchainKHR vkDevice
--
-- or less efficient:
--
-- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
--
-- __Note:__ @vkDestroySwapchainKHRUnsafe@ and @vkDestroySwapchainKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkDestroySwapchainKHR@ is an alias
--           of @vkDestroySwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkDestroySwapchainKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall safe "vkDestroySwapchainKHR"
               vkDestroySwapchainKHRSafe ::
               VkDevice -- ^ device
                        -> VkSwapchainKHR -- ^ swapchain
                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                       -> IO ()

#else
vkDestroySwapchainKHRSafe ::
                          VkDevice -- ^ device
                                   -> VkSwapchainKHR -- ^ swapchain
                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                                  -> IO ()
vkDestroySwapchainKHRSafe :: VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
vkDestroySwapchainKHRSafe
  = IO
  (VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ())
-> VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkDestroySwapchainKHR)

{-# NOINLINE vkDestroySwapchainKHRSafe #-}
#endif

-- |
-- > void vkDestroySwapchainKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , const VkAllocationCallbacks* pAllocator
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myDestroySwapchainKHR <- vkGetDeviceProc @VkDestroySwapchainKHR vkDevice
--
-- or less efficient:
--
-- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
--
-- __Note:__ @vkDestroySwapchainKHRUnsafe@ and @vkDestroySwapchainKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkDestroySwapchainKHR@ is an alias
--           of @vkDestroySwapchainKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkDestroySwapchainKHRSafe@.
--
vkDestroySwapchainKHR ::
                      VkDevice -- ^ device
                               -> VkSwapchainKHR -- ^ swapchain
                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                              -> IO ()
#ifdef UNSAFE_FFI_DEFAULT
vkDestroySwapchainKHR = vkDestroySwapchainKHRUnsafe
#else
vkDestroySwapchainKHR :: VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
vkDestroySwapchainKHR = VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
vkDestroySwapchainKHRSafe

#endif
{-# INLINE vkDestroySwapchainKHR #-}

-- | > void vkDestroySwapchainKHR
--   >     ( VkDevice device
--   >     , VkSwapchainKHR swapchain
--   >     , const VkAllocationCallbacks* pAllocator
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
type HS_vkDestroySwapchainKHR =
     VkDevice -- ^ device
              -> VkSwapchainKHR -- ^ swapchain
                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                             -> IO ()

type PFN_vkDestroySwapchainKHR = FunPtr HS_vkDestroySwapchainKHR

foreign import ccall unsafe "dynamic"
               unwrapVkDestroySwapchainKHRUnsafe ::
               PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR

foreign import ccall safe "dynamic" unwrapVkDestroySwapchainKHRSafe
               :: PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR

instance VulkanProc "vkDestroySwapchainKHR" where
    type VkProcType "vkDestroySwapchainKHR" = HS_vkDestroySwapchainKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkDestroySwapchainKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkDestroySwapchainKHR)
-> VkProcType VkDestroySwapchainKHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkDestroySwapchainKHR)
-> VkProcType VkDestroySwapchainKHR
PFN_vkDestroySwapchainKHR
-> VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
unwrapVkDestroySwapchainKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkDestroySwapchainKHR)
-> VkProcType VkDestroySwapchainKHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkDestroySwapchainKHR)
-> VkProcType VkDestroySwapchainKHR
PFN_vkDestroySwapchainKHR
-> VkDevice -> VkSwapchainKHR -> Ptr VkAllocationCallbacks -> IO ()
unwrapVkDestroySwapchainKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetSwapchainImagesKHR :: CString

pattern $bVkGetSwapchainImagesKHR :: CString
$mVkGetSwapchainImagesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetSwapchainImagesKHR <-
        (is_VkGetSwapchainImagesKHR -> True)
  where
    VkGetSwapchainImagesKHR = CString
_VkGetSwapchainImagesKHR

{-# INLINE _VkGetSwapchainImagesKHR #-}

_VkGetSwapchainImagesKHR :: CString
_VkGetSwapchainImagesKHR :: CString
_VkGetSwapchainImagesKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetSwapchainImagesKHR\NUL"#

{-# INLINE is_VkGetSwapchainImagesKHR #-}

is_VkGetSwapchainImagesKHR :: CString -> Bool
is_VkGetSwapchainImagesKHR :: CString -> Bool
is_VkGetSwapchainImagesKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkGetSwapchainImagesKHR

type VkGetSwapchainImagesKHR = "vkGetSwapchainImagesKHR"

-- |
-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetSwapchainImagesKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , uint32_t* pSwapchainImageCount
-- >     , VkImage* pSwapchainImages
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
--
-- or less efficient:
--
-- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
--
-- __Note:__ @vkGetSwapchainImagesKHRUnsafe@ and @vkGetSwapchainImagesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetSwapchainImagesKHR@ is an alias
--           of @vkGetSwapchainImagesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetSwapchainImagesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall unsafe "vkGetSwapchainImagesKHR"
               vkGetSwapchainImagesKHRUnsafe ::
               VkDevice -- ^ device
                        ->
                 VkSwapchainKHR -- ^ swapchain
                                -> Ptr Word32 -- ^ pSwapchainImageCount
                                              -> Ptr VkImage -- ^ pSwapchainImages
                                                             -> IO VkResult

#else
vkGetSwapchainImagesKHRUnsafe ::
                              VkDevice -- ^ device
                                       ->
                                VkSwapchainKHR -- ^ swapchain
                                               -> Ptr Word32 -- ^ pSwapchainImageCount
                                                             -> Ptr VkImage -- ^ pSwapchainImages
                                                                            -> IO VkResult
vkGetSwapchainImagesKHRUnsafe :: VkDevice
-> VkSwapchainKHR -> Ptr Word32 -> Ptr VkImage -> IO VkResult
vkGetSwapchainImagesKHRUnsafe
  = IO
  (VkDevice
   -> VkSwapchainKHR -> Ptr Word32 -> Ptr VkImage -> IO VkResult)
-> VkDevice
-> VkSwapchainKHR
-> Ptr Word32
-> Ptr VkImage
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetSwapchainImagesKHR)

{-# NOINLINE vkGetSwapchainImagesKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetSwapchainImagesKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , uint32_t* pSwapchainImageCount
-- >     , VkImage* pSwapchainImages
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
--
-- or less efficient:
--
-- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
--
-- __Note:__ @vkGetSwapchainImagesKHRUnsafe@ and @vkGetSwapchainImagesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetSwapchainImagesKHR@ is an alias
--           of @vkGetSwapchainImagesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetSwapchainImagesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall safe "vkGetSwapchainImagesKHR"
               vkGetSwapchainImagesKHRSafe ::
               VkDevice -- ^ device
                        ->
                 VkSwapchainKHR -- ^ swapchain
                                -> Ptr Word32 -- ^ pSwapchainImageCount
                                              -> Ptr VkImage -- ^ pSwapchainImages
                                                             -> IO VkResult

#else
vkGetSwapchainImagesKHRSafe ::
                            VkDevice -- ^ device
                                     ->
                              VkSwapchainKHR -- ^ swapchain
                                             -> Ptr Word32 -- ^ pSwapchainImageCount
                                                           -> Ptr VkImage -- ^ pSwapchainImages
                                                                          -> IO VkResult
vkGetSwapchainImagesKHRSafe :: VkDevice
-> VkSwapchainKHR -> Ptr Word32 -> Ptr VkImage -> IO VkResult
vkGetSwapchainImagesKHRSafe
  = IO
  (VkDevice
   -> VkSwapchainKHR -> Ptr Word32 -> Ptr VkImage -> IO VkResult)
-> VkDevice
-> VkSwapchainKHR
-> Ptr Word32
-> Ptr VkImage
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetSwapchainImagesKHR)

{-# NOINLINE vkGetSwapchainImagesKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetSwapchainImagesKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , uint32_t* pSwapchainImageCount
-- >     , VkImage* pSwapchainImages
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
--
-- or less efficient:
--
-- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
--
-- __Note:__ @vkGetSwapchainImagesKHRUnsafe@ and @vkGetSwapchainImagesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetSwapchainImagesKHR@ is an alias
--           of @vkGetSwapchainImagesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetSwapchainImagesKHRSafe@.
--
vkGetSwapchainImagesKHR ::
                        VkDevice -- ^ device
                                 ->
                          VkSwapchainKHR -- ^ swapchain
                                         -> Ptr Word32 -- ^ pSwapchainImageCount
                                                       -> Ptr VkImage -- ^ pSwapchainImages
                                                                      -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkGetSwapchainImagesKHR = vkGetSwapchainImagesKHRUnsafe
#else
vkGetSwapchainImagesKHR :: VkDevice
-> VkSwapchainKHR -> Ptr Word32 -> Ptr VkImage -> IO VkResult
vkGetSwapchainImagesKHR = VkDevice
-> VkSwapchainKHR -> Ptr Word32 -> Ptr VkImage -> IO VkResult
vkGetSwapchainImagesKHRSafe

#endif
{-# INLINE vkGetSwapchainImagesKHR #-}

-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkGetSwapchainImagesKHR
--   >     ( VkDevice device
--   >     , VkSwapchainKHR swapchain
--   >     , uint32_t* pSwapchainImageCount
--   >     , VkImage* pSwapchainImages
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
type HS_vkGetSwapchainImagesKHR =
     VkDevice -- ^ device
              ->
       VkSwapchainKHR -- ^ swapchain
                      -> Ptr Word32 -- ^ pSwapchainImageCount
                                    -> Ptr VkImage -- ^ pSwapchainImages
                                                   -> IO VkResult

type PFN_vkGetSwapchainImagesKHR =
     FunPtr HS_vkGetSwapchainImagesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetSwapchainImagesKHRUnsafe ::
               PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetSwapchainImagesKHRSafe ::
               PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR

instance VulkanProc "vkGetSwapchainImagesKHR" where
    type VkProcType "vkGetSwapchainImagesKHR" =
         HS_vkGetSwapchainImagesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetSwapchainImagesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetSwapchainImagesKHR)
-> VkProcType VkGetSwapchainImagesKHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkGetSwapchainImagesKHR)
-> VkProcType VkGetSwapchainImagesKHR
PFN_vkGetSwapchainImagesKHR
-> VkDevice
-> VkSwapchainKHR
-> Ptr Word32
-> Ptr VkImage
-> IO VkResult
unwrapVkGetSwapchainImagesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetSwapchainImagesKHR)
-> VkProcType VkGetSwapchainImagesKHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkGetSwapchainImagesKHR)
-> VkProcType VkGetSwapchainImagesKHR
PFN_vkGetSwapchainImagesKHR
-> VkDevice
-> VkSwapchainKHR
-> Ptr Word32
-> Ptr VkImage
-> IO VkResult
unwrapVkGetSwapchainImagesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkAcquireNextImageKHR :: CString

pattern $bVkAcquireNextImageKHR :: CString
$mVkAcquireNextImageKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkAcquireNextImageKHR <- (is_VkAcquireNextImageKHR -> True)
  where
    VkAcquireNextImageKHR = CString
_VkAcquireNextImageKHR

{-# INLINE _VkAcquireNextImageKHR #-}

_VkAcquireNextImageKHR :: CString
_VkAcquireNextImageKHR :: CString
_VkAcquireNextImageKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkAcquireNextImageKHR\NUL"#

{-# INLINE is_VkAcquireNextImageKHR #-}

is_VkAcquireNextImageKHR :: CString -> Bool
is_VkAcquireNextImageKHR :: CString -> Bool
is_VkAcquireNextImageKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkAcquireNextImageKHR

type VkAcquireNextImageKHR = "vkAcquireNextImageKHR"

-- |
-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkAcquireNextImageKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , uint64_t timeout
-- >     , VkSemaphore semaphore
-- >     , VkFence fence
-- >     , uint32_t* pImageIndex
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
--
-- or less efficient:
--
-- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
--
-- __Note:__ @vkAcquireNextImageKHRUnsafe@ and @vkAcquireNextImageKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkAcquireNextImageKHR@ is an alias
--           of @vkAcquireNextImageKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkAcquireNextImageKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall unsafe "vkAcquireNextImageKHR"
               vkAcquireNextImageKHRUnsafe ::
               VkDevice -- ^ device
                        ->
                 VkSwapchainKHR -- ^ swapchain
                                ->
                   Word64 -- ^ timeout
                          -> VkSemaphore -- ^ semaphore
                                         -> VkFence -- ^ fence
                                                    -> Ptr Word32 -- ^ pImageIndex
                                                                  -> IO VkResult

#else
vkAcquireNextImageKHRUnsafe ::
                            VkDevice -- ^ device
                                     ->
                              VkSwapchainKHR -- ^ swapchain
                                             ->
                                Word64 -- ^ timeout
                                       -> VkSemaphore -- ^ semaphore
                                                      -> VkFence -- ^ fence
                                                                 -> Ptr Word32 -- ^ pImageIndex
                                                                               -> IO VkResult
vkAcquireNextImageKHRUnsafe :: VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
vkAcquireNextImageKHRUnsafe
  = IO
  (VkDevice
   -> VkSwapchainKHR
   -> Word64
   -> VkSemaphore
   -> VkFence
   -> Ptr Word32
   -> IO VkResult)
-> VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkAcquireNextImageKHR)

{-# NOINLINE vkAcquireNextImageKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkAcquireNextImageKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , uint64_t timeout
-- >     , VkSemaphore semaphore
-- >     , VkFence fence
-- >     , uint32_t* pImageIndex
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
--
-- or less efficient:
--
-- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
--
-- __Note:__ @vkAcquireNextImageKHRUnsafe@ and @vkAcquireNextImageKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkAcquireNextImageKHR@ is an alias
--           of @vkAcquireNextImageKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkAcquireNextImageKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall safe "vkAcquireNextImageKHR"
               vkAcquireNextImageKHRSafe ::
               VkDevice -- ^ device
                        ->
                 VkSwapchainKHR -- ^ swapchain
                                ->
                   Word64 -- ^ timeout
                          -> VkSemaphore -- ^ semaphore
                                         -> VkFence -- ^ fence
                                                    -> Ptr Word32 -- ^ pImageIndex
                                                                  -> IO VkResult

#else
vkAcquireNextImageKHRSafe ::
                          VkDevice -- ^ device
                                   ->
                            VkSwapchainKHR -- ^ swapchain
                                           ->
                              Word64 -- ^ timeout
                                     -> VkSemaphore -- ^ semaphore
                                                    -> VkFence -- ^ fence
                                                               -> Ptr Word32 -- ^ pImageIndex
                                                                             -> IO VkResult
vkAcquireNextImageKHRSafe :: VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
vkAcquireNextImageKHRSafe
  = IO
  (VkDevice
   -> VkSwapchainKHR
   -> Word64
   -> VkSemaphore
   -> VkFence
   -> Ptr Word32
   -> IO VkResult)
-> VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkAcquireNextImageKHR)

{-# NOINLINE vkAcquireNextImageKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkAcquireNextImageKHR
-- >     ( VkDevice device
-- >     , VkSwapchainKHR swapchain
-- >     , uint64_t timeout
-- >     , VkSemaphore semaphore
-- >     , VkFence fence
-- >     , uint32_t* pImageIndex
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
--
-- or less efficient:
--
-- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
--
-- __Note:__ @vkAcquireNextImageKHRUnsafe@ and @vkAcquireNextImageKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkAcquireNextImageKHR@ is an alias
--           of @vkAcquireNextImageKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkAcquireNextImageKHRSafe@.
--
vkAcquireNextImageKHR ::
                      VkDevice -- ^ device
                               ->
                        VkSwapchainKHR -- ^ swapchain
                                       ->
                          Word64 -- ^ timeout
                                 -> VkSemaphore -- ^ semaphore
                                                -> VkFence -- ^ fence
                                                           -> Ptr Word32 -- ^ pImageIndex
                                                                         -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkAcquireNextImageKHR = vkAcquireNextImageKHRUnsafe
#else
vkAcquireNextImageKHR :: VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
vkAcquireNextImageKHR = VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
vkAcquireNextImageKHRSafe

#endif
{-# INLINE vkAcquireNextImageKHR #-}

-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
--   > VkResult vkAcquireNextImageKHR
--   >     ( VkDevice device
--   >     , VkSwapchainKHR swapchain
--   >     , uint64_t timeout
--   >     , VkSemaphore semaphore
--   >     , VkFence fence
--   >     , uint32_t* pImageIndex
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
type HS_vkAcquireNextImageKHR =
     VkDevice -- ^ device
              ->
       VkSwapchainKHR -- ^ swapchain
                      ->
         Word64 -- ^ timeout
                -> VkSemaphore -- ^ semaphore
                               -> VkFence -- ^ fence
                                          -> Ptr Word32 -- ^ pImageIndex
                                                        -> IO VkResult

type PFN_vkAcquireNextImageKHR = FunPtr HS_vkAcquireNextImageKHR

foreign import ccall unsafe "dynamic"
               unwrapVkAcquireNextImageKHRUnsafe ::
               PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR

foreign import ccall safe "dynamic" unwrapVkAcquireNextImageKHRSafe
               :: PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR

instance VulkanProc "vkAcquireNextImageKHR" where
    type VkProcType "vkAcquireNextImageKHR" = HS_vkAcquireNextImageKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkAcquireNextImageKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkAcquireNextImageKHR)
-> VkProcType VkAcquireNextImageKHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkAcquireNextImageKHR)
-> VkProcType VkAcquireNextImageKHR
PFN_vkAcquireNextImageKHR
-> VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
unwrapVkAcquireNextImageKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkAcquireNextImageKHR)
-> VkProcType VkAcquireNextImageKHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkAcquireNextImageKHR)
-> VkProcType VkAcquireNextImageKHR
PFN_vkAcquireNextImageKHR
-> VkDevice
-> VkSwapchainKHR
-> Word64
-> VkSemaphore
-> VkFence
-> Ptr Word32
-> IO VkResult
unwrapVkAcquireNextImageKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkQueuePresentKHR :: CString

pattern $bVkQueuePresentKHR :: CString
$mVkQueuePresentKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkQueuePresentKHR <- (is_VkQueuePresentKHR -> True)
  where
    VkQueuePresentKHR = CString
_VkQueuePresentKHR

{-# INLINE _VkQueuePresentKHR #-}

_VkQueuePresentKHR :: CString
_VkQueuePresentKHR :: CString
_VkQueuePresentKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkQueuePresentKHR\NUL"#

{-# INLINE is_VkQueuePresentKHR #-}

is_VkQueuePresentKHR :: CString -> Bool
is_VkQueuePresentKHR :: CString -> Bool
is_VkQueuePresentKHR = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkQueuePresentKHR

type VkQueuePresentKHR = "vkQueuePresentKHR"

-- |
-- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkQueuePresentKHR
-- >     ( VkQueue queue
-- >     , const VkPresentInfoKHR* pPresentInfo
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myQueuePresentKHR <- vkGetInstanceProc @VkQueuePresentKHR vkInstance
--
-- or less efficient:
--
-- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
--
-- __Note:__ @vkQueuePresentKHRUnsafe@ and @vkQueuePresentKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkQueuePresentKHR@ is an alias
--           of @vkQueuePresentKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkQueuePresentKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall unsafe "vkQueuePresentKHR"
               vkQueuePresentKHRUnsafe ::
               VkQueue -- ^ queue
                       -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                               -> IO VkResult

#else
vkQueuePresentKHRUnsafe ::
                        VkQueue -- ^ queue
                                -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                        -> IO VkResult
vkQueuePresentKHRUnsafe :: VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
vkQueuePresentKHRUnsafe
  = IO (VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult)
-> VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkQueuePresentKHR)

{-# NOINLINE vkQueuePresentKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkQueuePresentKHR
-- >     ( VkQueue queue
-- >     , const VkPresentInfoKHR* pPresentInfo
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myQueuePresentKHR <- vkGetInstanceProc @VkQueuePresentKHR vkInstance
--
-- or less efficient:
--
-- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
--
-- __Note:__ @vkQueuePresentKHRUnsafe@ and @vkQueuePresentKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkQueuePresentKHR@ is an alias
--           of @vkQueuePresentKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkQueuePresentKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_0
foreign import ccall safe "vkQueuePresentKHR" vkQueuePresentKHRSafe
               :: VkQueue -- ^ queue
                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                  -> IO VkResult

#else
vkQueuePresentKHRSafe ::
                      VkQueue -- ^ queue
                              -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                      -> IO VkResult
vkQueuePresentKHRSafe :: VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
vkQueuePresentKHRSafe
  = IO (VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult)
-> VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkQueuePresentKHR)

{-# NOINLINE vkQueuePresentKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkQueuePresentKHR
-- >     ( VkQueue queue
-- >     , const VkPresentInfoKHR* pPresentInfo
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myQueuePresentKHR <- vkGetInstanceProc @VkQueuePresentKHR vkInstance
--
-- or less efficient:
--
-- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
--
-- __Note:__ @vkQueuePresentKHRUnsafe@ and @vkQueuePresentKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkQueuePresentKHR@ is an alias
--           of @vkQueuePresentKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkQueuePresentKHRSafe@.
--
vkQueuePresentKHR :: VkQueue -- ^ queue
                             -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                     -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkQueuePresentKHR = vkQueuePresentKHRUnsafe
#else
vkQueuePresentKHR :: VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
vkQueuePresentKHR = VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
vkQueuePresentKHRSafe

#endif
{-# INLINE vkQueuePresentKHR #-}

-- | Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
--   > VkResult vkQueuePresentKHR
--   >     ( VkQueue queue
--   >     , const VkPresentInfoKHR* pPresentInfo
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
type HS_vkQueuePresentKHR =
     VkQueue -- ^ queue
             -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                     -> IO VkResult

type PFN_vkQueuePresentKHR = FunPtr HS_vkQueuePresentKHR

foreign import ccall unsafe "dynamic" unwrapVkQueuePresentKHRUnsafe
               :: PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR

foreign import ccall safe "dynamic" unwrapVkQueuePresentKHRSafe ::
               PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR

instance VulkanProc "vkQueuePresentKHR" where
    type VkProcType "vkQueuePresentKHR" = HS_vkQueuePresentKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkQueuePresentKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkQueuePresentKHR)
-> VkProcType VkQueuePresentKHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkQueuePresentKHR)
-> VkProcType VkQueuePresentKHR
PFN_vkQueuePresentKHR
-> VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
unwrapVkQueuePresentKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkQueuePresentKHR)
-> VkProcType VkQueuePresentKHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkQueuePresentKHR)
-> VkProcType VkQueuePresentKHR
PFN_vkQueuePresentKHR
-> VkQueue -> Ptr VkPresentInfoKHR -> IO VkResult
unwrapVkQueuePresentKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VK_KHR_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a

pattern $bVK_KHR_SWAPCHAIN_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_KHR_SWAPCHAIN_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_SWAPCHAIN_SPEC_VERSION = 70

type VK_KHR_SWAPCHAIN_SPEC_VERSION = 70

pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString

pattern $bVK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString
$mVK_KHR_SWAPCHAIN_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_SWAPCHAIN_EXTENSION_NAME <-
        (is_VK_KHR_SWAPCHAIN_EXTENSION_NAME -> True)
  where
    VK_KHR_SWAPCHAIN_EXTENSION_NAME = CString
_VK_KHR_SWAPCHAIN_EXTENSION_NAME

{-# INLINE _VK_KHR_SWAPCHAIN_EXTENSION_NAME #-}

_VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString
_VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString
_VK_KHR_SWAPCHAIN_EXTENSION_NAME = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_KHR_swapchain\NUL"#

{-# INLINE is_VK_KHR_SWAPCHAIN_EXTENSION_NAME #-}

is_VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_SWAPCHAIN_EXTENSION_NAME
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VK_KHR_SWAPCHAIN_EXTENSION_NAME

type VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain"

pattern VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR =
        VkStructureType 1000001000

pattern VK_STRUCTURE_TYPE_PRESENT_INFO_KHR :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PRESENT_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_PRESENT_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PRESENT_INFO_KHR =
        VkStructureType 1000001001

pattern VK_IMAGE_LAYOUT_PRESENT_SRC_KHR :: VkImageLayout

pattern $bVK_IMAGE_LAYOUT_PRESENT_SRC_KHR :: VkImageLayout
$mVK_IMAGE_LAYOUT_PRESENT_SRC_KHR :: forall {r}. VkImageLayout -> (Void# -> r) -> (Void# -> r) -> r
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = VkImageLayout 1000001002

pattern VK_SUBOPTIMAL_KHR :: VkResult

pattern $bVK_SUBOPTIMAL_KHR :: VkResult
$mVK_SUBOPTIMAL_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBOPTIMAL_KHR = VkResult 1000001003

pattern VK_ERROR_OUT_OF_DATE_KHR :: VkResult

pattern $bVK_ERROR_OUT_OF_DATE_KHR :: VkResult
$mVK_ERROR_OUT_OF_DATE_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_ERROR_OUT_OF_DATE_KHR = VkResult (-1000001004)

-- | VkSwapchainKHR
pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR :: VkObjectType

pattern $bVK_OBJECT_TYPE_SWAPCHAIN_KHR :: VkObjectType
$mVK_OBJECT_TYPE_SWAPCHAIN_KHR :: forall {r}. VkObjectType -> (Void# -> r) -> (Void# -> r) -> r
VK_OBJECT_TYPE_SWAPCHAIN_KHR = VkObjectType 1000001000

pattern VkGetDeviceGroupPresentCapabilitiesKHR :: CString

pattern $bVkGetDeviceGroupPresentCapabilitiesKHR :: CString
$mVkGetDeviceGroupPresentCapabilitiesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetDeviceGroupPresentCapabilitiesKHR <-
        (is_VkGetDeviceGroupPresentCapabilitiesKHR -> True)
  where
    VkGetDeviceGroupPresentCapabilitiesKHR
      = CString
_VkGetDeviceGroupPresentCapabilitiesKHR

{-# INLINE _VkGetDeviceGroupPresentCapabilitiesKHR #-}

_VkGetDeviceGroupPresentCapabilitiesKHR :: CString
_VkGetDeviceGroupPresentCapabilitiesKHR :: CString
_VkGetDeviceGroupPresentCapabilitiesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetDeviceGroupPresentCapabilitiesKHR\NUL"#

{-# INLINE is_VkGetDeviceGroupPresentCapabilitiesKHR #-}

is_VkGetDeviceGroupPresentCapabilitiesKHR :: CString -> Bool
is_VkGetDeviceGroupPresentCapabilitiesKHR :: CString -> Bool
is_VkGetDeviceGroupPresentCapabilitiesKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkGetDeviceGroupPresentCapabilitiesKHR

type VkGetDeviceGroupPresentCapabilitiesKHR =
     "vkGetDeviceGroupPresentCapabilitiesKHR"

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
-- >     ( VkDevice device
-- >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetDeviceProc @VkGetDeviceGroupPresentCapabilitiesKHR vkDevice
--
-- or less efficient:
--
-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
--
-- __Note:__ @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ and @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetDeviceGroupPresentCapabilitiesKHR@ is an alias
--           of @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPresentCapabilitiesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall unsafe
               "vkGetDeviceGroupPresentCapabilitiesKHR"
               vkGetDeviceGroupPresentCapabilitiesKHRUnsafe ::
               VkDevice -- ^ device
                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                   -> IO VkResult

#else
vkGetDeviceGroupPresentCapabilitiesKHRUnsafe ::
                                             VkDevice -- ^ device
                                                      ->
                                               Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                                       ->
                                                 IO VkResult
vkGetDeviceGroupPresentCapabilitiesKHRUnsafe :: VkDevice -> Ptr VkDeviceGroupPresentCapabilitiesKHR -> IO VkResult
vkGetDeviceGroupPresentCapabilitiesKHRUnsafe
  = IO
  (VkDevice
   -> Ptr VkDeviceGroupPresentCapabilitiesKHR -> IO VkResult)
-> VkDevice
-> Ptr VkDeviceGroupPresentCapabilitiesKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetDeviceGroupPresentCapabilitiesKHR)

{-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
-- >     ( VkDevice device
-- >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetDeviceProc @VkGetDeviceGroupPresentCapabilitiesKHR vkDevice
--
-- or less efficient:
--
-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
--
-- __Note:__ @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ and @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetDeviceGroupPresentCapabilitiesKHR@ is an alias
--           of @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPresentCapabilitiesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall safe "vkGetDeviceGroupPresentCapabilitiesKHR"
               vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
               VkDevice -- ^ device
                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                   -> IO VkResult

#else
vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
                                           VkDevice -- ^ device
                                                    ->
                                             Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                                     -> IO VkResult
vkGetDeviceGroupPresentCapabilitiesKHRSafe :: VkDevice -> Ptr VkDeviceGroupPresentCapabilitiesKHR -> IO VkResult
vkGetDeviceGroupPresentCapabilitiesKHRSafe
  = IO
  (VkDevice
   -> Ptr VkDeviceGroupPresentCapabilitiesKHR -> IO VkResult)
-> VkDevice
-> Ptr VkDeviceGroupPresentCapabilitiesKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetDeviceGroupPresentCapabilitiesKHR)

{-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
-- >     ( VkDevice device
-- >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetDeviceProc @VkGetDeviceGroupPresentCapabilitiesKHR vkDevice
--
-- or less efficient:
--
-- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
--
-- __Note:__ @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ and @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetDeviceGroupPresentCapabilitiesKHR@ is an alias
--           of @vkGetDeviceGroupPresentCapabilitiesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPresentCapabilitiesKHRSafe@.
--
vkGetDeviceGroupPresentCapabilitiesKHR ::
                                       VkDevice -- ^ device
                                                ->
                                         Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                                 -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkGetDeviceGroupPresentCapabilitiesKHR
  = vkGetDeviceGroupPresentCapabilitiesKHRUnsafe
#else
vkGetDeviceGroupPresentCapabilitiesKHR :: VkDevice -> Ptr VkDeviceGroupPresentCapabilitiesKHR -> IO VkResult
vkGetDeviceGroupPresentCapabilitiesKHR
  = VkDevice -> Ptr VkDeviceGroupPresentCapabilitiesKHR -> IO VkResult
vkGetDeviceGroupPresentCapabilitiesKHRSafe

#endif
{-# INLINE vkGetDeviceGroupPresentCapabilitiesKHR #-}

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
--   >     ( VkDevice device
--   >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
type HS_vkGetDeviceGroupPresentCapabilitiesKHR =
     VkDevice -- ^ device
              -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                         -> IO VkResult

type PFN_vkGetDeviceGroupPresentCapabilitiesKHR =
     FunPtr HS_vkGetDeviceGroupPresentCapabilitiesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetDeviceGroupPresentCapabilitiesKHRUnsafe ::
               PFN_vkGetDeviceGroupPresentCapabilitiesKHR ->
                 HS_vkGetDeviceGroupPresentCapabilitiesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe ::
               PFN_vkGetDeviceGroupPresentCapabilitiesKHR ->
                 HS_vkGetDeviceGroupPresentCapabilitiesKHR

instance VulkanProc "vkGetDeviceGroupPresentCapabilitiesKHR" where
    type VkProcType "vkGetDeviceGroupPresentCapabilitiesKHR" =
         HS_vkGetDeviceGroupPresentCapabilitiesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetDeviceGroupPresentCapabilitiesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetDeviceGroupPresentCapabilitiesKHR)
-> VkProcType VkGetDeviceGroupPresentCapabilitiesKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetDeviceGroupPresentCapabilitiesKHR)
-> VkProcType VkGetDeviceGroupPresentCapabilitiesKHR
PFN_vkGetDeviceGroupPresentCapabilitiesKHR
-> VkDevice
-> Ptr VkDeviceGroupPresentCapabilitiesKHR
-> IO VkResult
unwrapVkGetDeviceGroupPresentCapabilitiesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetDeviceGroupPresentCapabilitiesKHR)
-> VkProcType VkGetDeviceGroupPresentCapabilitiesKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetDeviceGroupPresentCapabilitiesKHR)
-> VkProcType VkGetDeviceGroupPresentCapabilitiesKHR
PFN_vkGetDeviceGroupPresentCapabilitiesKHR
-> VkDevice
-> Ptr VkDeviceGroupPresentCapabilitiesKHR
-> IO VkResult
unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetDeviceGroupSurfacePresentModesKHR :: CString

pattern $bVkGetDeviceGroupSurfacePresentModesKHR :: CString
$mVkGetDeviceGroupSurfacePresentModesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetDeviceGroupSurfacePresentModesKHR <-
        (is_VkGetDeviceGroupSurfacePresentModesKHR -> True)
  where
    VkGetDeviceGroupSurfacePresentModesKHR
      = CString
_VkGetDeviceGroupSurfacePresentModesKHR

{-# INLINE _VkGetDeviceGroupSurfacePresentModesKHR #-}

_VkGetDeviceGroupSurfacePresentModesKHR :: CString
_VkGetDeviceGroupSurfacePresentModesKHR :: CString
_VkGetDeviceGroupSurfacePresentModesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetDeviceGroupSurfacePresentModesKHR\NUL"#

{-# INLINE is_VkGetDeviceGroupSurfacePresentModesKHR #-}

is_VkGetDeviceGroupSurfacePresentModesKHR :: CString -> Bool
is_VkGetDeviceGroupSurfacePresentModesKHR :: CString -> Bool
is_VkGetDeviceGroupSurfacePresentModesKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkGetDeviceGroupSurfacePresentModesKHR

type VkGetDeviceGroupSurfacePresentModesKHR =
     "vkGetDeviceGroupSurfacePresentModesKHR"

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
--
-- > VkResult vkGetDeviceGroupSurfacePresentModesKHR
-- >     ( VkDevice device
-- >     , VkSurfaceKHR surface
-- >     , VkDeviceGroupPresentModeFlagsKHR* pModes
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
--
-- or less efficient:
--
-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
--
-- __Note:__ @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ and @vkGetDeviceGroupSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetDeviceGroupSurfacePresentModesKHR@ is an alias
--           of @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupSurfacePresentModesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall unsafe
               "vkGetDeviceGroupSurfacePresentModesKHR"
               vkGetDeviceGroupSurfacePresentModesKHRUnsafe ::
               VkDevice -- ^ device
                        ->
                 VkSurfaceKHR -- ^ surface
                              -> Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                                      -> IO VkResult

#else
vkGetDeviceGroupSurfacePresentModesKHRUnsafe ::
                                             VkDevice -- ^ device
                                                      ->
                                               VkSurfaceKHR -- ^ surface
                                                            ->
                                                 Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                                                      -> IO VkResult
vkGetDeviceGroupSurfacePresentModesKHRUnsafe :: VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
vkGetDeviceGroupSurfacePresentModesKHRUnsafe
  = IO
  (VkDevice
   -> VkSurfaceKHR
   -> Ptr VkDeviceGroupPresentModeFlagsKHR
   -> IO VkResult)
-> VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetDeviceGroupSurfacePresentModesKHR)

{-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
--
-- > VkResult vkGetDeviceGroupSurfacePresentModesKHR
-- >     ( VkDevice device
-- >     , VkSurfaceKHR surface
-- >     , VkDeviceGroupPresentModeFlagsKHR* pModes
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
--
-- or less efficient:
--
-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
--
-- __Note:__ @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ and @vkGetDeviceGroupSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetDeviceGroupSurfacePresentModesKHR@ is an alias
--           of @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupSurfacePresentModesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall safe "vkGetDeviceGroupSurfacePresentModesKHR"
               vkGetDeviceGroupSurfacePresentModesKHRSafe ::
               VkDevice -- ^ device
                        ->
                 VkSurfaceKHR -- ^ surface
                              -> Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                                      -> IO VkResult

#else
vkGetDeviceGroupSurfacePresentModesKHRSafe ::
                                           VkDevice -- ^ device
                                                    ->
                                             VkSurfaceKHR -- ^ surface
                                                          ->
                                               Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                                                    -> IO VkResult
vkGetDeviceGroupSurfacePresentModesKHRSafe :: VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
vkGetDeviceGroupSurfacePresentModesKHRSafe
  = IO
  (VkDevice
   -> VkSurfaceKHR
   -> Ptr VkDeviceGroupPresentModeFlagsKHR
   -> IO VkResult)
-> VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetDeviceGroupSurfacePresentModesKHR)

{-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
--
-- > VkResult vkGetDeviceGroupSurfacePresentModesKHR
-- >     ( VkDevice device
-- >     , VkSurfaceKHR surface
-- >     , VkDeviceGroupPresentModeFlagsKHR* pModes
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
--
-- or less efficient:
--
-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
--
-- __Note:__ @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ and @vkGetDeviceGroupSurfacePresentModesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetDeviceGroupSurfacePresentModesKHR@ is an alias
--           of @vkGetDeviceGroupSurfacePresentModesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupSurfacePresentModesKHRSafe@.
--
vkGetDeviceGroupSurfacePresentModesKHR ::
                                       VkDevice -- ^ device
                                                ->
                                         VkSurfaceKHR -- ^ surface
                                                      ->
                                           Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                                                -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkGetDeviceGroupSurfacePresentModesKHR
  = vkGetDeviceGroupSurfacePresentModesKHRUnsafe
#else
vkGetDeviceGroupSurfacePresentModesKHR :: VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
vkGetDeviceGroupSurfacePresentModesKHR
  = VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
vkGetDeviceGroupSurfacePresentModesKHRSafe

#endif
{-# INLINE vkGetDeviceGroupSurfacePresentModesKHR #-}

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
--
--   > VkResult vkGetDeviceGroupSurfacePresentModesKHR
--   >     ( VkDevice device
--   >     , VkSurfaceKHR surface
--   >     , VkDeviceGroupPresentModeFlagsKHR* pModes
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
type HS_vkGetDeviceGroupSurfacePresentModesKHR =
     VkDevice -- ^ device
              ->
       VkSurfaceKHR -- ^ surface
                    -> Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                            -> IO VkResult

type PFN_vkGetDeviceGroupSurfacePresentModesKHR =
     FunPtr HS_vkGetDeviceGroupSurfacePresentModesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetDeviceGroupSurfacePresentModesKHRUnsafe ::
               PFN_vkGetDeviceGroupSurfacePresentModesKHR ->
                 HS_vkGetDeviceGroupSurfacePresentModesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe ::
               PFN_vkGetDeviceGroupSurfacePresentModesKHR ->
                 HS_vkGetDeviceGroupSurfacePresentModesKHR

instance VulkanProc "vkGetDeviceGroupSurfacePresentModesKHR" where
    type VkProcType "vkGetDeviceGroupSurfacePresentModesKHR" =
         HS_vkGetDeviceGroupSurfacePresentModesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetDeviceGroupSurfacePresentModesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetDeviceGroupSurfacePresentModesKHR)
-> VkProcType VkGetDeviceGroupSurfacePresentModesKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetDeviceGroupSurfacePresentModesKHR)
-> VkProcType VkGetDeviceGroupSurfacePresentModesKHR
PFN_vkGetDeviceGroupSurfacePresentModesKHR
-> VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
unwrapVkGetDeviceGroupSurfacePresentModesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetDeviceGroupSurfacePresentModesKHR)
-> VkProcType VkGetDeviceGroupSurfacePresentModesKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetDeviceGroupSurfacePresentModesKHR)
-> VkProcType VkGetDeviceGroupSurfacePresentModesKHR
PFN_vkGetDeviceGroupSurfacePresentModesKHR
-> VkDevice
-> VkSurfaceKHR
-> Ptr VkDeviceGroupPresentModeFlagsKHR
-> IO VkResult
unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPhysicalDevicePresentRectanglesKHR :: CString

pattern $bVkGetPhysicalDevicePresentRectanglesKHR :: CString
$mVkGetPhysicalDevicePresentRectanglesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPhysicalDevicePresentRectanglesKHR <-
        (is_VkGetPhysicalDevicePresentRectanglesKHR -> True)
  where
    VkGetPhysicalDevicePresentRectanglesKHR
      = CString
_VkGetPhysicalDevicePresentRectanglesKHR

{-# INLINE _VkGetPhysicalDevicePresentRectanglesKHR #-}

_VkGetPhysicalDevicePresentRectanglesKHR :: CString
_VkGetPhysicalDevicePresentRectanglesKHR :: CString
_VkGetPhysicalDevicePresentRectanglesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetPhysicalDevicePresentRectanglesKHR\NUL"#

{-# INLINE is_VkGetPhysicalDevicePresentRectanglesKHR #-}

is_VkGetPhysicalDevicePresentRectanglesKHR :: CString -> Bool
is_VkGetPhysicalDevicePresentRectanglesKHR :: CString -> Bool
is_VkGetPhysicalDevicePresentRectanglesKHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkGetPhysicalDevicePresentRectanglesKHR

type VkGetPhysicalDevicePresentRectanglesKHR =
     "vkGetPhysicalDevicePresentRectanglesKHR"

-- |
-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetPhysicalDevicePresentRectanglesKHR
-- >     ( VkPhysicalDevice physicalDevice
-- >     , VkSurfaceKHR surface
-- >     , uint32_t* pRectCount
-- >     , VkRect2D* pRects
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
--
-- or less efficient:
--
-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
--
-- __Note:__ @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ and @vkGetPhysicalDevicePresentRectanglesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetPhysicalDevicePresentRectanglesKHR@ is an alias
--           of @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePresentRectanglesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall unsafe
               "vkGetPhysicalDevicePresentRectanglesKHR"
               vkGetPhysicalDevicePresentRectanglesKHRUnsafe ::
               VkPhysicalDevice -- ^ physicalDevice
                                ->
                 VkSurfaceKHR -- ^ surface
                              -> Ptr Word32 -- ^ pRectCount
                                            -> Ptr VkRect2D -- ^ pRects
                                                            -> IO VkResult

#else
vkGetPhysicalDevicePresentRectanglesKHRUnsafe ::
                                              VkPhysicalDevice -- ^ physicalDevice
                                                               ->
                                                VkSurfaceKHR -- ^ surface
                                                             ->
                                                  Ptr Word32 -- ^ pRectCount
                                                             -> Ptr VkRect2D -- ^ pRects
                                                                             -> IO VkResult
vkGetPhysicalDevicePresentRectanglesKHRUnsafe :: VkPhysicalDevice
-> VkSurfaceKHR -> Ptr Word32 -> Ptr VkRect2D -> IO VkResult
vkGetPhysicalDevicePresentRectanglesKHRUnsafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR -> Ptr Word32 -> Ptr VkRect2D -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkRect2D
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetPhysicalDevicePresentRectanglesKHR)

{-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetPhysicalDevicePresentRectanglesKHR
-- >     ( VkPhysicalDevice physicalDevice
-- >     , VkSurfaceKHR surface
-- >     , uint32_t* pRectCount
-- >     , VkRect2D* pRects
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
--
-- or less efficient:
--
-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
--
-- __Note:__ @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ and @vkGetPhysicalDevicePresentRectanglesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetPhysicalDevicePresentRectanglesKHR@ is an alias
--           of @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePresentRectanglesKHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall safe "vkGetPhysicalDevicePresentRectanglesKHR"
               vkGetPhysicalDevicePresentRectanglesKHRSafe ::
               VkPhysicalDevice -- ^ physicalDevice
                                ->
                 VkSurfaceKHR -- ^ surface
                              -> Ptr Word32 -- ^ pRectCount
                                            -> Ptr VkRect2D -- ^ pRects
                                                            -> IO VkResult

#else
vkGetPhysicalDevicePresentRectanglesKHRSafe ::
                                            VkPhysicalDevice -- ^ physicalDevice
                                                             ->
                                              VkSurfaceKHR -- ^ surface
                                                           ->
                                                Ptr Word32 -- ^ pRectCount
                                                           -> Ptr VkRect2D -- ^ pRects
                                                                           -> IO VkResult
vkGetPhysicalDevicePresentRectanglesKHRSafe :: VkPhysicalDevice
-> VkSurfaceKHR -> Ptr Word32 -> Ptr VkRect2D -> IO VkResult
vkGetPhysicalDevicePresentRectanglesKHRSafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR -> Ptr Word32 -> Ptr VkRect2D -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkRect2D
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetPhysicalDevicePresentRectanglesKHR)

{-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
-- > VkResult vkGetPhysicalDevicePresentRectanglesKHR
-- >     ( VkPhysicalDevice physicalDevice
-- >     , VkSurfaceKHR surface
-- >     , uint32_t* pRectCount
-- >     , VkRect2D* pRects
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
--
-- or less efficient:
--
-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
--
-- __Note:__ @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ and @vkGetPhysicalDevicePresentRectanglesKHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkGetPhysicalDevicePresentRectanglesKHR@ is an alias
--           of @vkGetPhysicalDevicePresentRectanglesKHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePresentRectanglesKHRSafe@.
--
vkGetPhysicalDevicePresentRectanglesKHR ::
                                        VkPhysicalDevice -- ^ physicalDevice
                                                         ->
                                          VkSurfaceKHR -- ^ surface
                                                       -> Ptr Word32 -- ^ pRectCount
                                                                     -> Ptr VkRect2D -- ^ pRects
                                                                                     -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkGetPhysicalDevicePresentRectanglesKHR
  = vkGetPhysicalDevicePresentRectanglesKHRUnsafe
#else
vkGetPhysicalDevicePresentRectanglesKHR :: VkPhysicalDevice
-> VkSurfaceKHR -> Ptr Word32 -> Ptr VkRect2D -> IO VkResult
vkGetPhysicalDevicePresentRectanglesKHR
  = VkPhysicalDevice
-> VkSurfaceKHR -> Ptr Word32 -> Ptr VkRect2D -> IO VkResult
vkGetPhysicalDevicePresentRectanglesKHRSafe

#endif
{-# INLINE vkGetPhysicalDevicePresentRectanglesKHR #-}

-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkGetPhysicalDevicePresentRectanglesKHR
--   >     ( VkPhysicalDevice physicalDevice
--   >     , VkSurfaceKHR surface
--   >     , uint32_t* pRectCount
--   >     , VkRect2D* pRects
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
type HS_vkGetPhysicalDevicePresentRectanglesKHR =
     VkPhysicalDevice -- ^ physicalDevice
                      ->
       VkSurfaceKHR -- ^ surface
                    -> Ptr Word32 -- ^ pRectCount
                                  -> Ptr VkRect2D -- ^ pRects
                                                  -> IO VkResult

type PFN_vkGetPhysicalDevicePresentRectanglesKHR =
     FunPtr HS_vkGetPhysicalDevicePresentRectanglesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetPhysicalDevicePresentRectanglesKHRUnsafe ::
               PFN_vkGetPhysicalDevicePresentRectanglesKHR ->
                 HS_vkGetPhysicalDevicePresentRectanglesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe ::
               PFN_vkGetPhysicalDevicePresentRectanglesKHR ->
                 HS_vkGetPhysicalDevicePresentRectanglesKHR

instance VulkanProc "vkGetPhysicalDevicePresentRectanglesKHR" where
    type VkProcType "vkGetPhysicalDevicePresentRectanglesKHR" =
         HS_vkGetPhysicalDevicePresentRectanglesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetPhysicalDevicePresentRectanglesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetPhysicalDevicePresentRectanglesKHR)
-> VkProcType VkGetPhysicalDevicePresentRectanglesKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetPhysicalDevicePresentRectanglesKHR)
-> VkProcType VkGetPhysicalDevicePresentRectanglesKHR
PFN_vkGetPhysicalDevicePresentRectanglesKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkRect2D
-> IO VkResult
unwrapVkGetPhysicalDevicePresentRectanglesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetPhysicalDevicePresentRectanglesKHR)
-> VkProcType VkGetPhysicalDevicePresentRectanglesKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetPhysicalDevicePresentRectanglesKHR)
-> VkProcType VkGetPhysicalDevicePresentRectanglesKHR
PFN_vkGetPhysicalDevicePresentRectanglesKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkRect2D
-> IO VkResult
unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkAcquireNextImage2KHR :: CString

pattern $bVkAcquireNextImage2KHR :: CString
$mVkAcquireNextImage2KHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkAcquireNextImage2KHR <-
        (is_VkAcquireNextImage2KHR -> True)
  where
    VkAcquireNextImage2KHR = CString
_VkAcquireNextImage2KHR

{-# INLINE _VkAcquireNextImage2KHR #-}

_VkAcquireNextImage2KHR :: CString
_VkAcquireNextImage2KHR :: CString
_VkAcquireNextImage2KHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkAcquireNextImage2KHR\NUL"#

{-# INLINE is_VkAcquireNextImage2KHR #-}

is_VkAcquireNextImage2KHR :: CString -> Bool
is_VkAcquireNextImage2KHR :: CString -> Bool
is_VkAcquireNextImage2KHR
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkAcquireNextImage2KHR

type VkAcquireNextImage2KHR = "vkAcquireNextImage2KHR"

-- |
-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkAcquireNextImage2KHR
-- >     ( VkDevice device
-- >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
-- >     , uint32_t* pImageIndex
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
--
-- or less efficient:
--
-- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
--
-- __Note:__ @vkAcquireNextImage2KHRUnsafe@ and @vkAcquireNextImage2KHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkAcquireNextImage2KHR@ is an alias
--           of @vkAcquireNextImage2KHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkAcquireNextImage2KHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall unsafe "vkAcquireNextImage2KHR"
               vkAcquireNextImage2KHRUnsafe ::
               VkDevice -- ^ device
                        ->
                 Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                               -> Ptr Word32 -- ^ pImageIndex
                                                             -> IO VkResult

#else
vkAcquireNextImage2KHRUnsafe ::
                             VkDevice -- ^ device
                                      ->
                               Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                                             -> Ptr Word32 -- ^ pImageIndex
                                                                           -> IO VkResult
vkAcquireNextImage2KHRUnsafe :: VkDevice
-> Ptr VkAcquireNextImageInfoKHR -> Ptr Word32 -> IO VkResult
vkAcquireNextImage2KHRUnsafe
  = IO
  (VkDevice
   -> Ptr VkAcquireNextImageInfoKHR -> Ptr Word32 -> IO VkResult)
-> VkDevice
-> Ptr VkAcquireNextImageInfoKHR
-> Ptr Word32
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkAcquireNextImage2KHR)

{-# NOINLINE vkAcquireNextImage2KHRUnsafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkAcquireNextImage2KHR
-- >     ( VkDevice device
-- >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
-- >     , uint32_t* pImageIndex
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
--
-- or less efficient:
--
-- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
--
-- __Note:__ @vkAcquireNextImage2KHRUnsafe@ and @vkAcquireNextImage2KHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkAcquireNextImage2KHR@ is an alias
--           of @vkAcquireNextImage2KHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkAcquireNextImage2KHRSafe@.
--
--
#ifdef NATIVE_FFI_VK_VERSION_1_1
foreign import ccall safe "vkAcquireNextImage2KHR"
               vkAcquireNextImage2KHRSafe ::
               VkDevice -- ^ device
                        ->
                 Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                               -> Ptr Word32 -- ^ pImageIndex
                                                             -> IO VkResult

#else
vkAcquireNextImage2KHRSafe ::
                           VkDevice -- ^ device
                                    ->
                             Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                                           -> Ptr Word32 -- ^ pImageIndex
                                                                         -> IO VkResult
vkAcquireNextImage2KHRSafe :: VkDevice
-> Ptr VkAcquireNextImageInfoKHR -> Ptr Word32 -> IO VkResult
vkAcquireNextImage2KHRSafe
  = IO
  (VkDevice
   -> Ptr VkAcquireNextImageInfoKHR -> Ptr Word32 -> IO VkResult)
-> VkDevice
-> Ptr VkAcquireNextImageInfoKHR
-> Ptr Word32
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkAcquireNextImage2KHR)

{-# NOINLINE vkAcquireNextImage2KHRSafe #-}
#endif

-- |
-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
-- > VkResult vkAcquireNextImage2KHR
-- >     ( VkDevice device
-- >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
-- >     , uint32_t* pImageIndex
-- >     )
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
--
-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
--           as a @foreign import@ call to C Vulkan loader.
--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
--
-- Independently of the flag setting, you can lookup the function manually at runtime:
--
-- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
--
-- or less efficient:
--
-- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
--
-- __Note:__ @vkAcquireNextImage2KHRUnsafe@ and @vkAcquireNextImage2KHRSafe@ are the @unsafe@ and @safe@
--           FFI imports of this function, respectively. @vkAcquireNextImage2KHR@ is an alias
--           of @vkAcquireNextImage2KHRUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
--           is enabled; otherwise, it is an alias of @vkAcquireNextImage2KHRSafe@.
--
vkAcquireNextImage2KHR ::
                       VkDevice -- ^ device
                                ->
                         Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                                       -> Ptr Word32 -- ^ pImageIndex
                                                                     -> IO VkResult
#ifdef UNSAFE_FFI_DEFAULT
vkAcquireNextImage2KHR = vkAcquireNextImage2KHRUnsafe
#else
vkAcquireNextImage2KHR :: VkDevice
-> Ptr VkAcquireNextImageInfoKHR -> Ptr Word32 -> IO VkResult
vkAcquireNextImage2KHR = VkDevice
-> Ptr VkAcquireNextImageInfoKHR -> Ptr Word32 -> IO VkResult
vkAcquireNextImage2KHRSafe

#endif
{-# INLINE vkAcquireNextImage2KHR #-}

-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'.
--
--   > VkResult vkAcquireNextImage2KHR
--   >     ( VkDevice device
--   >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
--   >     , uint32_t* pImageIndex
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
type HS_vkAcquireNextImage2KHR =
     VkDevice -- ^ device
              ->
       Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                     -> Ptr Word32 -- ^ pImageIndex
                                                   -> IO VkResult

type PFN_vkAcquireNextImage2KHR = FunPtr HS_vkAcquireNextImage2KHR

foreign import ccall unsafe "dynamic"
               unwrapVkAcquireNextImage2KHRUnsafe ::
               PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR

foreign import ccall safe "dynamic"
               unwrapVkAcquireNextImage2KHRSafe ::
               PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR

instance VulkanProc "vkAcquireNextImage2KHR" where
    type VkProcType "vkAcquireNextImage2KHR" =
         HS_vkAcquireNextImage2KHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkAcquireNextImage2KHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkAcquireNextImage2KHR)
-> VkProcType VkAcquireNextImage2KHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkAcquireNextImage2KHR)
-> VkProcType VkAcquireNextImage2KHR
PFN_vkAcquireNextImage2KHR
-> VkDevice
-> Ptr VkAcquireNextImageInfoKHR
-> Ptr Word32
-> IO VkResult
unwrapVkAcquireNextImage2KHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkAcquireNextImage2KHR)
-> VkProcType VkAcquireNextImage2KHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkAcquireNextImage2KHR)
-> VkProcType VkAcquireNextImage2KHR
PFN_vkAcquireNextImage2KHR
-> VkDevice
-> Ptr VkAcquireNextImageInfoKHR
-> Ptr Word32
-> IO VkResult
unwrapVkAcquireNextImage2KHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR =
        VkStructureType 1000060007

pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR =
        VkStructureType 1000060008

pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR =
        VkStructureType 1000060009

pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR =
        VkStructureType 1000060010

pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR =
        VkStructureType 1000060011

pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR =
        VkStructureType 1000060012

-- | Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
--
--   bitpos = @0@
pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR ::
        VkSwapchainCreateBitmaskKHR a

pattern $bVK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: forall (a :: FlagType). VkSwapchainCreateBitmaskKHR a
$mVK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: forall {r} {a :: FlagType}.
VkSwapchainCreateBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR =
        VkSwapchainCreateBitmaskKHR 1

-- | Swapchain is protected
--
--   bitpos = @1@
pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR ::
        VkSwapchainCreateBitmaskKHR a

pattern $bVK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR :: forall (a :: FlagType). VkSwapchainCreateBitmaskKHR a
$mVK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR :: forall {r} {a :: FlagType}.
VkSwapchainCreateBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR =
        VkSwapchainCreateBitmaskKHR 2