{-# 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_surface
       (-- * Vulkan extension: @VK_KHR_surface@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @James Jones @cubanismo,Ian Elliott @ianelliottus@
        --
        -- author: @KHR@
        --
        -- type: @instance@
        --
        -- Extension number: @1@
        pattern VK_COLORSPACE_SRGB_NONLINEAR_KHR,
        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
        VkColorComponentFlagBits(), VkColorComponentFlags(),
        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
        VkCompositeAlphaFlagsKHR(), VkExtent2D, AHardwareBuffer(),
        ANativeWindow(), CAMetalLayer(), VkBool32(..), VkDeviceAddress(..),
        VkDeviceSize(..), VkFlags(..), VkSampleMask(..), VkFormat(..),
        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
        VkImageAspectFlagBits(), VkImageAspectFlags(),
        VkImageCreateFlagBits(), VkImageCreateFlags(),
        VkImageUsageFlagBits(), VkImageUsageFlags(),
        VkImageViewCreateBitmask(..), VkImageViewCreateFlagBits(),
        VkImageViewCreateFlags(), VkPresentModeKHR(..),
        VkSurfaceCapabilitiesKHR, VkSurfaceFormatKHR,
        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
        -- > #include "vk_platform.h"
        VkDestroySurfaceKHR, pattern VkDestroySurfaceKHR,
        HS_vkDestroySurfaceKHR, PFN_vkDestroySurfaceKHR,
        vkDestroySurfaceKHR, vkDestroySurfaceKHRUnsafe,
        vkDestroySurfaceKHRSafe, VkGetPhysicalDeviceSurfaceSupportKHR,
        pattern VkGetPhysicalDeviceSurfaceSupportKHR,
        HS_vkGetPhysicalDeviceSurfaceSupportKHR,
        PFN_vkGetPhysicalDeviceSurfaceSupportKHR,
        vkGetPhysicalDeviceSurfaceSupportKHR,
        vkGetPhysicalDeviceSurfaceSupportKHRUnsafe,
        vkGetPhysicalDeviceSurfaceSupportKHRSafe,
        VkGetPhysicalDeviceSurfaceCapabilitiesKHR,
        pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR,
        HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
        PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
        vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
        vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe,
        vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe,
        VkGetPhysicalDeviceSurfaceFormatsKHR,
        pattern VkGetPhysicalDeviceSurfaceFormatsKHR,
        HS_vkGetPhysicalDeviceSurfaceFormatsKHR,
        PFN_vkGetPhysicalDeviceSurfaceFormatsKHR,
        vkGetPhysicalDeviceSurfaceFormatsKHR,
        vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe,
        vkGetPhysicalDeviceSurfaceFormatsKHRSafe,
        VkGetPhysicalDeviceSurfacePresentModesKHR,
        pattern VkGetPhysicalDeviceSurfacePresentModesKHR,
        HS_vkGetPhysicalDeviceSurfacePresentModesKHR,
        PFN_vkGetPhysicalDeviceSurfacePresentModesKHR,
        vkGetPhysicalDeviceSurfacePresentModesKHR,
        vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe,
        vkGetPhysicalDeviceSurfacePresentModesKHRSafe,
        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
        VkResult(..), 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, VkSurfaceCapabilities2EXT,
        VkSurfaceCapabilities2KHR, VkSurfaceFormat2KHR,
        VkSurfaceProtectedCapabilitiesKHR, VK_KHR_SURFACE_SPEC_VERSION,
        pattern VK_KHR_SURFACE_SPEC_VERSION, VK_KHR_SURFACE_EXTENSION_NAME,
        pattern VK_KHR_SURFACE_EXTENSION_NAME,
        pattern VK_ERROR_SURFACE_LOST_KHR,
        pattern VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
        pattern VK_OBJECT_TYPE_SURFACE_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.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.Surface
import Graphics.Vulkan.Types.Enum.SystemAllocationScope
import Graphics.Vulkan.Types.Funcpointers
import Graphics.Vulkan.Types.Handles
import Graphics.Vulkan.Types.Struct.AllocationCallbacks
import Graphics.Vulkan.Types.Struct.Extent
import Graphics.Vulkan.Types.Struct.Surface
import System.IO.Unsafe                                  (unsafeDupablePerformIO)

pattern VkDestroySurfaceKHR :: CString

pattern $bVkDestroySurfaceKHR :: CString
$mVkDestroySurfaceKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkDestroySurfaceKHR <- (is_VkDestroySurfaceKHR -> True)
  where
    VkDestroySurfaceKHR = CString
_VkDestroySurfaceKHR

{-# INLINE _VkDestroySurfaceKHR #-}

_VkDestroySurfaceKHR :: CString
_VkDestroySurfaceKHR :: CString
_VkDestroySurfaceKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkDestroySurfaceKHR\NUL"#

{-# INLINE is_VkDestroySurfaceKHR #-}

is_VkDestroySurfaceKHR :: CString -> Bool
is_VkDestroySurfaceKHR :: CString -> Bool
is_VkDestroySurfaceKHR = (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
_VkDestroySurfaceKHR

type VkDestroySurfaceKHR = "vkDestroySurfaceKHR"

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

#else
vkDestroySurfaceKHRUnsafe ::
                          VkInstance -- ^ instance
                                     -> VkSurfaceKHR -- ^ surface
                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                                  -> IO ()
vkDestroySurfaceKHRUnsafe :: VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ()
vkDestroySurfaceKHRUnsafe
  = IO
  (VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ())
-> VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ()
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkDestroySurfaceKHR)

{-# NOINLINE vkDestroySurfaceKHRUnsafe #-}
#endif

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

#else
vkDestroySurfaceKHRSafe ::
                        VkInstance -- ^ instance
                                   -> VkSurfaceKHR -- ^ surface
                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                                -> IO ()
vkDestroySurfaceKHRSafe :: VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ()
vkDestroySurfaceKHRSafe
  = IO
  (VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ())
-> VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ()
forall a. IO a -> a
unsafeDupablePerformIO (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkDestroySurfaceKHR)

{-# NOINLINE vkDestroySurfaceKHRSafe #-}
#endif

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

#endif
{-# INLINE vkDestroySurfaceKHR #-}

-- | > void vkDestroySurfaceKHR
--   >     ( VkInstance instance
--   >     , VkSurfaceKHR surface
--   >     , const VkAllocationCallbacks* pAllocator
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroySurfaceKHR vkDestroySurfaceKHR registry at www.khronos.org>
type HS_vkDestroySurfaceKHR =
     VkInstance -- ^ instance
                -> VkSurfaceKHR -- ^ surface
                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                             -> IO ()

type PFN_vkDestroySurfaceKHR = FunPtr HS_vkDestroySurfaceKHR

foreign import ccall unsafe "dynamic"
               unwrapVkDestroySurfaceKHRUnsafe ::
               PFN_vkDestroySurfaceKHR -> HS_vkDestroySurfaceKHR

foreign import ccall safe "dynamic" unwrapVkDestroySurfaceKHRSafe
               :: PFN_vkDestroySurfaceKHR -> HS_vkDestroySurfaceKHR

instance VulkanProc "vkDestroySurfaceKHR" where
    type VkProcType "vkDestroySurfaceKHR" = HS_vkDestroySurfaceKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkDestroySurfaceKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkDestroySurfaceKHR)
-> VkProcType VkDestroySurfaceKHR
unwrapVkProcPtrUnsafe = FunPtr (VkProcType VkDestroySurfaceKHR)
-> VkProcType VkDestroySurfaceKHR
PFN_vkDestroySurfaceKHR
-> VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ()
unwrapVkDestroySurfaceKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkDestroySurfaceKHR)
-> VkProcType VkDestroySurfaceKHR
unwrapVkProcPtrSafe = FunPtr (VkProcType VkDestroySurfaceKHR)
-> VkProcType VkDestroySurfaceKHR
PFN_vkDestroySurfaceKHR
-> VkInstance -> VkSurfaceKHR -> Ptr VkAllocationCallbacks -> IO ()
unwrapVkDestroySurfaceKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPhysicalDeviceSurfaceSupportKHR :: CString

pattern $bVkGetPhysicalDeviceSurfaceSupportKHR :: CString
$mVkGetPhysicalDeviceSurfaceSupportKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPhysicalDeviceSurfaceSupportKHR <-
        (is_VkGetPhysicalDeviceSurfaceSupportKHR -> True)
  where
    VkGetPhysicalDeviceSurfaceSupportKHR
      = CString
_VkGetPhysicalDeviceSurfaceSupportKHR

{-# INLINE _VkGetPhysicalDeviceSurfaceSupportKHR #-}

_VkGetPhysicalDeviceSurfaceSupportKHR :: CString
_VkGetPhysicalDeviceSurfaceSupportKHR :: CString
_VkGetPhysicalDeviceSurfaceSupportKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetPhysicalDeviceSurfaceSupportKHR\NUL"#

{-# INLINE is_VkGetPhysicalDeviceSurfaceSupportKHR #-}

is_VkGetPhysicalDeviceSurfaceSupportKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfaceSupportKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfaceSupportKHR
  = (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
_VkGetPhysicalDeviceSurfaceSupportKHR

type VkGetPhysicalDeviceSurfaceSupportKHR =
     "vkGetPhysicalDeviceSurfaceSupportKHR"

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

#else
vkGetPhysicalDeviceSurfaceSupportKHRUnsafe ::
                                           VkPhysicalDevice -- ^ physicalDevice
                                                            ->
                                             Word32 -- ^ queueFamilyIndex
                                                    -> VkSurfaceKHR -- ^ surface
                                                                    -> Ptr VkBool32 -- ^ pSupported
                                                                                    -> IO VkResult
vkGetPhysicalDeviceSurfaceSupportKHRUnsafe :: VkPhysicalDevice
-> Word32 -> VkSurfaceKHR -> Ptr VkBool32 -> IO VkResult
vkGetPhysicalDeviceSurfaceSupportKHRUnsafe
  = IO
  (VkPhysicalDevice
   -> Word32 -> VkSurfaceKHR -> Ptr VkBool32 -> IO VkResult)
-> VkPhysicalDevice
-> Word32
-> VkSurfaceKHR
-> Ptr VkBool32
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetPhysicalDeviceSurfaceSupportKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHRUnsafe #-}
#endif

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

#else
vkGetPhysicalDeviceSurfaceSupportKHRSafe ::
                                         VkPhysicalDevice -- ^ physicalDevice
                                                          ->
                                           Word32 -- ^ queueFamilyIndex
                                                  -> VkSurfaceKHR -- ^ surface
                                                                  -> Ptr VkBool32 -- ^ pSupported
                                                                                  -> IO VkResult
vkGetPhysicalDeviceSurfaceSupportKHRSafe :: VkPhysicalDevice
-> Word32 -> VkSurfaceKHR -> Ptr VkBool32 -> IO VkResult
vkGetPhysicalDeviceSurfaceSupportKHRSafe
  = IO
  (VkPhysicalDevice
   -> Word32 -> VkSurfaceKHR -> Ptr VkBool32 -> IO VkResult)
-> VkPhysicalDevice
-> Word32
-> VkSurfaceKHR
-> Ptr VkBool32
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetPhysicalDeviceSurfaceSupportKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHRSafe #-}
#endif

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

#endif
{-# INLINE vkGetPhysicalDeviceSurfaceSupportKHR #-}

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
--
--   > VkResult vkGetPhysicalDeviceSurfaceSupportKHR
--   >     ( VkPhysicalDevice physicalDevice
--   >     , uint32_t queueFamilyIndex
--   >     , VkSurfaceKHR surface
--   >     , VkBool32* pSupported
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
type HS_vkGetPhysicalDeviceSurfaceSupportKHR =
     VkPhysicalDevice -- ^ physicalDevice
                      ->
       Word32 -- ^ queueFamilyIndex
              -> VkSurfaceKHR -- ^ surface
                              -> Ptr VkBool32 -- ^ pSupported
                                              -> IO VkResult

type PFN_vkGetPhysicalDeviceSurfaceSupportKHR =
     FunPtr HS_vkGetPhysicalDeviceSurfaceSupportKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetPhysicalDeviceSurfaceSupportKHRUnsafe ::
               PFN_vkGetPhysicalDeviceSurfaceSupportKHR ->
                 HS_vkGetPhysicalDeviceSurfaceSupportKHR

foreign import ccall safe "dynamic"
               unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe ::
               PFN_vkGetPhysicalDeviceSurfaceSupportKHR ->
                 HS_vkGetPhysicalDeviceSurfaceSupportKHR

instance VulkanProc "vkGetPhysicalDeviceSurfaceSupportKHR" where
    type VkProcType "vkGetPhysicalDeviceSurfaceSupportKHR" =
         HS_vkGetPhysicalDeviceSurfaceSupportKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetPhysicalDeviceSurfaceSupportKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfaceSupportKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceSupportKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfaceSupportKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceSupportKHR
PFN_vkGetPhysicalDeviceSurfaceSupportKHR
-> VkPhysicalDevice
-> Word32
-> VkSurfaceKHR
-> Ptr VkBool32
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfaceSupportKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfaceSupportKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceSupportKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfaceSupportKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceSupportKHR
PFN_vkGetPhysicalDeviceSurfaceSupportKHR
-> VkPhysicalDevice
-> Word32
-> VkSurfaceKHR
-> Ptr VkBool32
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString

pattern $bVkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString
$mVkGetPhysicalDeviceSurfaceCapabilitiesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPhysicalDeviceSurfaceCapabilitiesKHR <-
        (is_VkGetPhysicalDeviceSurfaceCapabilitiesKHR -> True)
  where
    VkGetPhysicalDeviceSurfaceCapabilitiesKHR
      = CString
_VkGetPhysicalDeviceSurfaceCapabilitiesKHR

{-# INLINE _VkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}

_VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString
_VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString
_VkGetPhysicalDeviceSurfaceCapabilitiesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetPhysicalDeviceSurfaceCapabilitiesKHR\NUL"#

{-# INLINE is_VkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}

is_VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfaceCapabilitiesKHR
  = (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
_VkGetPhysicalDeviceSurfaceCapabilitiesKHR

type VkGetPhysicalDeviceSurfaceCapabilitiesKHR =
     "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"

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

#else
vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe ::
                                                VkPhysicalDevice -- ^ physicalDevice
                                                                 ->
                                                  VkSurfaceKHR -- ^ surface
                                                               ->
                                                    Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
                                                                                 -> IO VkResult
vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe :: VkPhysicalDevice
-> VkSurfaceKHR -> Ptr VkSurfaceCapabilitiesKHR -> IO VkResult
vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR -> Ptr VkSurfaceCapabilitiesKHR -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr VkSurfaceCapabilitiesKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetPhysicalDeviceSurfaceCapabilitiesKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe #-}
#endif

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

#else
vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe ::
                                              VkPhysicalDevice -- ^ physicalDevice
                                                               ->
                                                VkSurfaceKHR -- ^ surface
                                                             ->
                                                  Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
                                                                               -> IO VkResult
vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe :: VkPhysicalDevice
-> VkSurfaceKHR -> Ptr VkSurfaceCapabilitiesKHR -> IO VkResult
vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR -> Ptr VkSurfaceCapabilitiesKHR -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr VkSurfaceCapabilitiesKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetPhysicalDeviceSurfaceCapabilitiesKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe #-}
#endif

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

#endif
{-# INLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
--
--   > VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR
--   >     ( VkPhysicalDevice physicalDevice
--   >     , VkSurfaceKHR surface
--   >     , VkSurfaceCapabilitiesKHR* pSurfaceCapabilities
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
type HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
     VkPhysicalDevice -- ^ physicalDevice
                      ->
       VkSurfaceKHR -- ^ surface
                    -> Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
                                                    -> IO VkResult

type PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
     FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe ::
               PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ->
                 HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe ::
               PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ->
                 HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR

instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
         where
    type VkProcType "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" =
         HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetPhysicalDeviceSurfaceCapabilitiesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr VkSurfaceCapabilitiesKHR
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceCapabilitiesKHR
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr VkSurfaceCapabilitiesKHR
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPhysicalDeviceSurfaceFormatsKHR :: CString

pattern $bVkGetPhysicalDeviceSurfaceFormatsKHR :: CString
$mVkGetPhysicalDeviceSurfaceFormatsKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPhysicalDeviceSurfaceFormatsKHR <-
        (is_VkGetPhysicalDeviceSurfaceFormatsKHR -> True)
  where
    VkGetPhysicalDeviceSurfaceFormatsKHR
      = CString
_VkGetPhysicalDeviceSurfaceFormatsKHR

{-# INLINE _VkGetPhysicalDeviceSurfaceFormatsKHR #-}

_VkGetPhysicalDeviceSurfaceFormatsKHR :: CString
_VkGetPhysicalDeviceSurfaceFormatsKHR :: CString
_VkGetPhysicalDeviceSurfaceFormatsKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetPhysicalDeviceSurfaceFormatsKHR\NUL"#

{-# INLINE is_VkGetPhysicalDeviceSurfaceFormatsKHR #-}

is_VkGetPhysicalDeviceSurfaceFormatsKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfaceFormatsKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfaceFormatsKHR
  = (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
_VkGetPhysicalDeviceSurfaceFormatsKHR

type VkGetPhysicalDeviceSurfaceFormatsKHR =
     "vkGetPhysicalDeviceSurfaceFormatsKHR"

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

#else
vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe ::
                                           VkPhysicalDevice -- ^ physicalDevice
                                                            ->
                                             VkSurfaceKHR -- ^ surface
                                                          ->
                                               Ptr Word32 -- ^ pSurfaceFormatCount
                                                          -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
                                                                                    -> IO VkResult
vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe :: VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkSurfaceFormatKHR
-> IO VkResult
vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR
   -> Ptr Word32
   -> Ptr VkSurfaceFormatKHR
   -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkSurfaceFormatKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetPhysicalDeviceSurfaceFormatsKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHRUnsafe #-}
#endif

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

#else
vkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
                                         VkPhysicalDevice -- ^ physicalDevice
                                                          ->
                                           VkSurfaceKHR -- ^ surface
                                                        ->
                                             Ptr Word32 -- ^ pSurfaceFormatCount
                                                        -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
                                                                                  -> IO VkResult
vkGetPhysicalDeviceSurfaceFormatsKHRSafe :: VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkSurfaceFormatKHR
-> IO VkResult
vkGetPhysicalDeviceSurfaceFormatsKHRSafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR
   -> Ptr Word32
   -> Ptr VkSurfaceFormatKHR
   -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkSurfaceFormatKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetPhysicalDeviceSurfaceFormatsKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHRSafe #-}
#endif

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

#endif
{-# INLINE vkGetPhysicalDeviceSurfaceFormatsKHR #-}

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

type PFN_vkGetPhysicalDeviceSurfaceFormatsKHR =
     FunPtr HS_vkGetPhysicalDeviceSurfaceFormatsKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetPhysicalDeviceSurfaceFormatsKHRUnsafe ::
               PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ->
                 HS_vkGetPhysicalDeviceSurfaceFormatsKHR

foreign import ccall safe "dynamic"
               unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
               PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ->
                 HS_vkGetPhysicalDeviceSurfaceFormatsKHR

instance VulkanProc "vkGetPhysicalDeviceSurfaceFormatsKHR" where
    type VkProcType "vkGetPhysicalDeviceSurfaceFormatsKHR" =
         HS_vkGetPhysicalDeviceSurfaceFormatsKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetPhysicalDeviceSurfaceFormatsKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkSurfaceFormatKHR
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfaceFormatsKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR)
-> VkProcType VkGetPhysicalDeviceSurfaceFormatsKHR
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkSurfaceFormatKHR
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPhysicalDeviceSurfacePresentModesKHR :: CString

pattern $bVkGetPhysicalDeviceSurfacePresentModesKHR :: CString
$mVkGetPhysicalDeviceSurfacePresentModesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPhysicalDeviceSurfacePresentModesKHR <-
        (is_VkGetPhysicalDeviceSurfacePresentModesKHR -> True)
  where
    VkGetPhysicalDeviceSurfacePresentModesKHR
      = CString
_VkGetPhysicalDeviceSurfacePresentModesKHR

{-# INLINE _VkGetPhysicalDeviceSurfacePresentModesKHR #-}

_VkGetPhysicalDeviceSurfacePresentModesKHR :: CString
_VkGetPhysicalDeviceSurfacePresentModesKHR :: CString
_VkGetPhysicalDeviceSurfacePresentModesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetPhysicalDeviceSurfacePresentModesKHR\NUL"#

{-# INLINE is_VkGetPhysicalDeviceSurfacePresentModesKHR #-}

is_VkGetPhysicalDeviceSurfacePresentModesKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfacePresentModesKHR :: CString -> Bool
is_VkGetPhysicalDeviceSurfacePresentModesKHR
  = (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
_VkGetPhysicalDeviceSurfacePresentModesKHR

type VkGetPhysicalDeviceSurfacePresentModesKHR =
     "vkGetPhysicalDeviceSurfacePresentModesKHR"

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

#else
vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe ::
                                                VkPhysicalDevice -- ^ physicalDevice
                                                                 ->
                                                  VkSurfaceKHR -- ^ surface
                                                               ->
                                                    Ptr Word32 -- ^ pPresentModeCount
                                                               ->
                                                      Ptr VkPresentModeKHR -- ^ pPresentModes
                                                                           -> IO VkResult
vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe :: VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkPresentModeKHR
-> IO VkResult
vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR
   -> Ptr Word32
   -> Ptr VkPresentModeKHR
   -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkPresentModeKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcUnsafe @VkGetPhysicalDeviceSurfacePresentModesKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe #-}
#endif

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

#else
vkGetPhysicalDeviceSurfacePresentModesKHRSafe ::
                                              VkPhysicalDevice -- ^ physicalDevice
                                                               ->
                                                VkSurfaceKHR -- ^ surface
                                                             ->
                                                  Ptr Word32 -- ^ pPresentModeCount
                                                             -> Ptr VkPresentModeKHR -- ^ pPresentModes
                                                                                     -> IO VkResult
vkGetPhysicalDeviceSurfacePresentModesKHRSafe :: VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkPresentModeKHR
-> IO VkResult
vkGetPhysicalDeviceSurfacePresentModesKHRSafe
  = IO
  (VkPhysicalDevice
   -> VkSurfaceKHR
   -> Ptr Word32
   -> Ptr VkPresentModeKHR
   -> IO VkResult)
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkPresentModeKHR
-> IO VkResult
forall a. IO a -> a
unsafeDupablePerformIO
      (forall (proc :: Symbol). VulkanProc proc => IO (VkProcType proc)
vkGetProcSafe @VkGetPhysicalDeviceSurfacePresentModesKHR)

{-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHRSafe #-}
#endif

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

#endif
{-# INLINE vkGetPhysicalDeviceSurfacePresentModesKHR #-}

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

type PFN_vkGetPhysicalDeviceSurfacePresentModesKHR =
     FunPtr HS_vkGetPhysicalDeviceSurfacePresentModesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetPhysicalDeviceSurfacePresentModesKHRUnsafe ::
               PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ->
                 HS_vkGetPhysicalDeviceSurfacePresentModesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe ::
               PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ->
                 HS_vkGetPhysicalDeviceSurfacePresentModesKHR

instance VulkanProc "vkGetPhysicalDeviceSurfacePresentModesKHR"
         where
    type VkProcType "vkGetPhysicalDeviceSurfacePresentModesKHR" =
         HS_vkGetPhysicalDeviceSurfacePresentModesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetPhysicalDeviceSurfacePresentModesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR)
-> VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR)
-> VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkPresentModeKHR
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfacePresentModesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR)
-> VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR
unwrapVkProcPtrSafe
      = FunPtr (VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR)
-> VkProcType VkGetPhysicalDeviceSurfacePresentModesKHR
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR
-> VkPhysicalDevice
-> VkSurfaceKHR
-> Ptr Word32
-> Ptr VkPresentModeKHR
-> IO VkResult
unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

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

pattern $bVK_KHR_SURFACE_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_KHR_SURFACE_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_SURFACE_SPEC_VERSION = 25

type VK_KHR_SURFACE_SPEC_VERSION = 25

pattern VK_KHR_SURFACE_EXTENSION_NAME :: CString

pattern $bVK_KHR_SURFACE_EXTENSION_NAME :: CString
$mVK_KHR_SURFACE_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_SURFACE_EXTENSION_NAME <-
        (is_VK_KHR_SURFACE_EXTENSION_NAME -> True)
  where
    VK_KHR_SURFACE_EXTENSION_NAME = CString
_VK_KHR_SURFACE_EXTENSION_NAME

{-# INLINE _VK_KHR_SURFACE_EXTENSION_NAME #-}

_VK_KHR_SURFACE_EXTENSION_NAME :: CString
_VK_KHR_SURFACE_EXTENSION_NAME :: CString
_VK_KHR_SURFACE_EXTENSION_NAME = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_KHR_surface\NUL"#

{-# INLINE is_VK_KHR_SURFACE_EXTENSION_NAME #-}

is_VK_KHR_SURFACE_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_SURFACE_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_SURFACE_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_SURFACE_EXTENSION_NAME

type VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"

pattern VK_ERROR_SURFACE_LOST_KHR :: VkResult

pattern $bVK_ERROR_SURFACE_LOST_KHR :: VkResult
$mVK_ERROR_SURFACE_LOST_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_ERROR_SURFACE_LOST_KHR = VkResult (-1000000000)

pattern VK_ERROR_NATIVE_WINDOW_IN_USE_KHR :: VkResult

pattern $bVK_ERROR_NATIVE_WINDOW_IN_USE_KHR :: VkResult
$mVK_ERROR_NATIVE_WINDOW_IN_USE_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = VkResult (-1000000001)

-- | VkSurfaceKHR
pattern VK_OBJECT_TYPE_SURFACE_KHR :: VkObjectType

pattern $bVK_OBJECT_TYPE_SURFACE_KHR :: VkObjectType
$mVK_OBJECT_TYPE_SURFACE_KHR :: forall {r}. VkObjectType -> (Void# -> r) -> (Void# -> r) -> r
VK_OBJECT_TYPE_SURFACE_KHR = VkObjectType 1000000000