{-# OPTIONS_GHC -fno-warn-orphans#-}
{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE CPP                      #-}
{-# LANGUAGE DataKinds                #-}
{-# LANGUAGE FlexibleInstances        #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash                #-}
{-# LANGUAGE PatternSynonyms          #-}
{-# LANGUAGE Strict                   #-}
{-# LANGUAGE TypeFamilies             #-}
{-# LANGUAGE ViewPatterns             #-}
module Graphics.Vulkan.Ext.VK_KHR_deferred_host_operations
       (-- * Vulkan extension: @VK_KHR_deferred_host_operations@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Josh Barczak @jbarczak@
        --
        -- author: @KHR@
        --
        -- type: @device@
        --
        -- platform: @provisional@
        --
        -- Extension number: @269@
        module Graphics.Vulkan.Marshal,
        VkAccelerationStructureBuildGeometryInfoKHR,
        VkAccelerationStructureGeometryAabbsDataKHR,
        VkAccelerationStructureGeometryDataKHR,
        VkAccelerationStructureGeometryInstancesDataKHR,
        VkAccelerationStructureGeometryKHR,
        VkAccelerationStructureGeometryTrianglesDataKHR,
        VkAccelerationStructureBuildTypeKHR(..),
        VkAccelerationStructureMemoryRequirementsTypeKHR(..),
        VkAccelerationStructureTypeKHR(..),
        VkAccelerationStructureMemoryRequirementsTypeNV(..),
        VkAccelerationStructureTypeNV(..), AHardwareBuffer(),
        ANativeWindow(), CAMetalLayer(), VkBool32(..), VkDeviceAddress(..),
        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
        VkBuildAccelerationStructureBitmaskKHR(..),
        VkBuildAccelerationStructureFlagBitsKHR(),
        VkBuildAccelerationStructureFlagBitsNV(..),
        VkBuildAccelerationStructureFlagsKHR(),
        VkCopyAccelerationStructureInfoKHR,
        VkCopyAccelerationStructureModeKHR(..),
        VkCopyAccelerationStructureModeNV(..),
        VkCopyAccelerationStructureToMemoryInfoKHR,
        VkCopyMemoryToAccelerationStructureInfoKHR,
        VkDeferredOperationInfoKHR, VkDeviceOrHostAddressConstKHR,
        VkDeviceOrHostAddressKHR, VkFormat(..), VkFormatFeatureBitmask(..),
        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
        VkGeometryInstanceBitmaskKHR(..), VkGeometryBitmaskKHR(..),
        VkGeometryTypeKHR(..), VkGeometryFlagBitsKHR(),
        VkGeometryFlagBitsNV(..), VkGeometryFlagsKHR(),
        VkGeometryInstanceFlagBitsKHR(), VkGeometryInstanceFlagBitsNV(..),
        VkGeometryInstanceFlagsKHR(), VkGeometryTypeNV(..),
        VkIndexType(..), VkPipelineBindPoint(..),
        VkPipelineCacheHeaderVersion(..), VkPipelineCreateBitmask(..),
        VkPipelineCreationFeedbackBitmaskEXT(..),
        VkPipelineExecutableStatisticFormatKHR(..),
        VkPipelineStageBitmask(..), VkPipelineCacheCreateBitmask(..),
        VkPipelineCacheCreateFlagBits(), VkPipelineCacheCreateFlags(),
        VkPipelineCompilerControlBitmaskAMD(..),
        VkPipelineCompilerControlFlagBitsAMD(),
        VkPipelineCompilerControlFlagsAMD(), VkPipelineCreateFlagBits(),
        VkPipelineCreateFlags(), VkPipelineCreationFeedbackFlagBitsEXT(),
        VkPipelineCreationFeedbackFlagsEXT(),
        VkPipelineShaderStageCreateBitmask(..),
        VkPipelineShaderStageCreateFlagBits(),
        VkPipelineShaderStageCreateFlags(), VkPipelineStageFlagBits(),
        VkPipelineStageFlags(), VkPipelineLibraryCreateInfoKHR,
        VkPipelineShaderStageCreateInfo, VkRayTracingPipelineCreateInfoKHR,
        VkRayTracingPipelineInterfaceCreateInfoKHR,
        VkRayTracingShaderGroupCreateInfoKHR,
        VkRayTracingShaderGroupTypeKHR(..),
        VkRayTracingShaderGroupTypeNV(..),
        VkShaderFloatControlsIndependence(..), VkShaderInfoTypeAMD(..),
        VkShaderStageBitmask(..), VkShaderCorePropertiesBitmaskAMD(..),
        VkShaderCorePropertiesFlagBitsAMD(),
        VkShaderCorePropertiesFlagsAMD(),
        VkShaderFloatControlsIndependenceKHR(..),
        VkShaderModuleCreateBitmask(..), VkShaderModuleCreateFlagBits(),
        VkShaderModuleCreateFlags(), VkShaderStageFlagBits(),
        VkShaderStageFlags(), VkSpecializationInfo,
        VkSpecializationMapEntry, VkStructureType(..),
        -- > #include "vk_platform.h"
        VkCreateDeferredOperationKHR, pattern VkCreateDeferredOperationKHR,
        HS_vkCreateDeferredOperationKHR, PFN_vkCreateDeferredOperationKHR,
        VkDestroyDeferredOperationKHR,
        pattern VkDestroyDeferredOperationKHR,
        HS_vkDestroyDeferredOperationKHR,
        PFN_vkDestroyDeferredOperationKHR,
        VkGetDeferredOperationMaxConcurrencyKHR,
        pattern VkGetDeferredOperationMaxConcurrencyKHR,
        HS_vkGetDeferredOperationMaxConcurrencyKHR,
        PFN_vkGetDeferredOperationMaxConcurrencyKHR,
        VkGetDeferredOperationResultKHR,
        pattern VkGetDeferredOperationResultKHR,
        HS_vkGetDeferredOperationResultKHR,
        PFN_vkGetDeferredOperationResultKHR, VkDeferredOperationJoinKHR,
        pattern VkDeferredOperationJoinKHR, HS_vkDeferredOperationJoinKHR,
        PFN_vkDeferredOperationJoinKHR, 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,
        VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION,
        pattern VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION,
        VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME,
        pattern VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,
        pattern VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR,
        pattern VK_THREAD_IDLE_KHR, pattern VK_THREAD_DONE_KHR,
        pattern VK_OPERATION_DEFERRED_KHR,
        pattern VK_OPERATION_NOT_DEFERRED_KHR)
       where
import GHC.Ptr                                                   (Ptr (..))
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Proc                              (VulkanProc (..))
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Enum.AccelerationStructure
import Graphics.Vulkan.Types.Enum.BuildAccelerationStructureFlag
import Graphics.Vulkan.Types.Enum.CopyAccelerationStructureMode
import Graphics.Vulkan.Types.Enum.Format
import Graphics.Vulkan.Types.Enum.Geometry
import Graphics.Vulkan.Types.Enum.IndexType
import Graphics.Vulkan.Types.Enum.InternalAllocationType
import Graphics.Vulkan.Types.Enum.ObjectType                     (VkObjectType (..))
import Graphics.Vulkan.Types.Enum.Pipeline
import Graphics.Vulkan.Types.Enum.RayTracingShaderGroupType
import Graphics.Vulkan.Types.Enum.Result
import Graphics.Vulkan.Types.Enum.Shader
import Graphics.Vulkan.Types.Enum.StructureType
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.EnableBetaExtensions         (VkAccelerationStructureBuildGeometryInfoKHR,
                                                                  VkAccelerationStructureGeometryAabbsDataKHR,
                                                                  VkAccelerationStructureGeometryDataKHR,
                                                                  VkAccelerationStructureGeometryInstancesDataKHR,
                                                                  VkAccelerationStructureGeometryKHR,
                                                                  VkAccelerationStructureGeometryTrianglesDataKHR,
                                                                  VkCopyAccelerationStructureInfoKHR,
                                                                  VkCopyAccelerationStructureToMemoryInfoKHR,
                                                                  VkCopyMemoryToAccelerationStructureInfoKHR,
                                                                  VkDeferredOperationInfoKHR,
                                                                  VkDeviceOrHostAddressConstKHR,
                                                                  VkDeviceOrHostAddressKHR,
                                                                  VkPipelineLibraryCreateInfoKHR,
                                                                  VkRayTracingPipelineCreateInfoKHR,
                                                                  VkRayTracingPipelineInterfaceCreateInfoKHR,
                                                                  VkRayTracingShaderGroupCreateInfoKHR)
import Graphics.Vulkan.Types.Struct.Pipeline                     (VkPipelineShaderStageCreateInfo)
import Graphics.Vulkan.Types.Struct.Specialization               (VkSpecializationInfo,
                                                                  VkSpecializationMapEntry)

pattern VkCreateDeferredOperationKHR :: CString

pattern $bVkCreateDeferredOperationKHR :: CString
$mVkCreateDeferredOperationKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCreateDeferredOperationKHR <-
        (is_VkCreateDeferredOperationKHR -> True)
  where
    VkCreateDeferredOperationKHR = CString
_VkCreateDeferredOperationKHR

{-# INLINE _VkCreateDeferredOperationKHR #-}

_VkCreateDeferredOperationKHR :: CString
_VkCreateDeferredOperationKHR :: CString
_VkCreateDeferredOperationKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCreateDeferredOperationKHR\NUL"#

{-# INLINE is_VkCreateDeferredOperationKHR #-}

is_VkCreateDeferredOperationKHR :: CString -> Bool
is_VkCreateDeferredOperationKHR :: CString -> Bool
is_VkCreateDeferredOperationKHR
  = (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
_VkCreateDeferredOperationKHR

type VkCreateDeferredOperationKHR = "vkCreateDeferredOperationKHR"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
--
--   > VkResult vkCreateDeferredOperationKHR
--   >     ( VkDevice device
--   >     , const VkAllocationCallbacks* pAllocator
--   >     , VkDeferredOperationKHR* pDeferredOperation
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR registry at www.khronos.org>
type HS_vkCreateDeferredOperationKHR =
     VkDevice -- ^ device
              ->
       Ptr VkAllocationCallbacks -- ^ pAllocator
                                 ->
         Ptr VkDeferredOperationKHR -- ^ pDeferredOperation
                                    -> IO VkResult

type PFN_vkCreateDeferredOperationKHR =
     FunPtr HS_vkCreateDeferredOperationKHR

foreign import ccall unsafe "dynamic"
               unwrapVkCreateDeferredOperationKHRUnsafe ::
               PFN_vkCreateDeferredOperationKHR -> HS_vkCreateDeferredOperationKHR

foreign import ccall safe "dynamic"
               unwrapVkCreateDeferredOperationKHRSafe ::
               PFN_vkCreateDeferredOperationKHR -> HS_vkCreateDeferredOperationKHR

instance VulkanProc "vkCreateDeferredOperationKHR" where
    type VkProcType "vkCreateDeferredOperationKHR" =
         HS_vkCreateDeferredOperationKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCreateDeferredOperationKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCreateDeferredOperationKHR")
-> VkProcType "vkCreateDeferredOperationKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCreateDeferredOperationKHR")
-> VkProcType "vkCreateDeferredOperationKHR"
PFN_vkCreateDeferredOperationKHR -> HS_vkCreateDeferredOperationKHR
unwrapVkCreateDeferredOperationKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCreateDeferredOperationKHR")
-> VkProcType "vkCreateDeferredOperationKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCreateDeferredOperationKHR")
-> VkProcType "vkCreateDeferredOperationKHR"
PFN_vkCreateDeferredOperationKHR -> HS_vkCreateDeferredOperationKHR
unwrapVkCreateDeferredOperationKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkDestroyDeferredOperationKHR :: CString

pattern $bVkDestroyDeferredOperationKHR :: CString
$mVkDestroyDeferredOperationKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkDestroyDeferredOperationKHR <-
        (is_VkDestroyDeferredOperationKHR -> True)
  where
    VkDestroyDeferredOperationKHR = CString
_VkDestroyDeferredOperationKHR

{-# INLINE _VkDestroyDeferredOperationKHR #-}

_VkDestroyDeferredOperationKHR :: CString
_VkDestroyDeferredOperationKHR :: CString
_VkDestroyDeferredOperationKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkDestroyDeferredOperationKHR\NUL"#

{-# INLINE is_VkDestroyDeferredOperationKHR #-}

is_VkDestroyDeferredOperationKHR :: CString -> Bool
is_VkDestroyDeferredOperationKHR :: CString -> Bool
is_VkDestroyDeferredOperationKHR
  = (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
_VkDestroyDeferredOperationKHR

type VkDestroyDeferredOperationKHR =
     "vkDestroyDeferredOperationKHR"

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

type PFN_vkDestroyDeferredOperationKHR =
     FunPtr HS_vkDestroyDeferredOperationKHR

foreign import ccall unsafe "dynamic"
               unwrapVkDestroyDeferredOperationKHRUnsafe ::
               PFN_vkDestroyDeferredOperationKHR ->
                 HS_vkDestroyDeferredOperationKHR

foreign import ccall safe "dynamic"
               unwrapVkDestroyDeferredOperationKHRSafe ::
               PFN_vkDestroyDeferredOperationKHR ->
                 HS_vkDestroyDeferredOperationKHR

instance VulkanProc "vkDestroyDeferredOperationKHR" where
    type VkProcType "vkDestroyDeferredOperationKHR" =
         HS_vkDestroyDeferredOperationKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkDestroyDeferredOperationKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkDestroyDeferredOperationKHR")
-> VkProcType "vkDestroyDeferredOperationKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkDestroyDeferredOperationKHR")
-> VkProcType "vkDestroyDeferredOperationKHR"
PFN_vkDestroyDeferredOperationKHR
-> HS_vkDestroyDeferredOperationKHR
unwrapVkDestroyDeferredOperationKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkDestroyDeferredOperationKHR")
-> VkProcType "vkDestroyDeferredOperationKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkDestroyDeferredOperationKHR")
-> VkProcType "vkDestroyDeferredOperationKHR"
PFN_vkDestroyDeferredOperationKHR
-> HS_vkDestroyDeferredOperationKHR
unwrapVkDestroyDeferredOperationKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetDeferredOperationMaxConcurrencyKHR :: CString

pattern $bVkGetDeferredOperationMaxConcurrencyKHR :: CString
$mVkGetDeferredOperationMaxConcurrencyKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetDeferredOperationMaxConcurrencyKHR <-
        (is_VkGetDeferredOperationMaxConcurrencyKHR -> True)
  where
    VkGetDeferredOperationMaxConcurrencyKHR
      = CString
_VkGetDeferredOperationMaxConcurrencyKHR

{-# INLINE _VkGetDeferredOperationMaxConcurrencyKHR #-}

_VkGetDeferredOperationMaxConcurrencyKHR :: CString
_VkGetDeferredOperationMaxConcurrencyKHR :: CString
_VkGetDeferredOperationMaxConcurrencyKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetDeferredOperationMaxConcurrencyKHR\NUL"#

{-# INLINE is_VkGetDeferredOperationMaxConcurrencyKHR #-}

is_VkGetDeferredOperationMaxConcurrencyKHR :: CString -> Bool
is_VkGetDeferredOperationMaxConcurrencyKHR :: CString -> Bool
is_VkGetDeferredOperationMaxConcurrencyKHR
  = (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
_VkGetDeferredOperationMaxConcurrencyKHR

type VkGetDeferredOperationMaxConcurrencyKHR =
     "vkGetDeferredOperationMaxConcurrencyKHR"

-- | > uint32_t vkGetDeferredOperationMaxConcurrencyKHR
--   >     ( VkDevice device
--   >     , VkDeferredOperationKHR operation
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR registry at www.khronos.org>
type HS_vkGetDeferredOperationMaxConcurrencyKHR =
     VkDevice -- ^ device
              -> VkDeferredOperationKHR -- ^ operation
                                        -> IO Word32

type PFN_vkGetDeferredOperationMaxConcurrencyKHR =
     FunPtr HS_vkGetDeferredOperationMaxConcurrencyKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetDeferredOperationMaxConcurrencyKHRUnsafe ::
               PFN_vkGetDeferredOperationMaxConcurrencyKHR ->
                 HS_vkGetDeferredOperationMaxConcurrencyKHR

foreign import ccall safe "dynamic"
               unwrapVkGetDeferredOperationMaxConcurrencyKHRSafe ::
               PFN_vkGetDeferredOperationMaxConcurrencyKHR ->
                 HS_vkGetDeferredOperationMaxConcurrencyKHR

instance VulkanProc "vkGetDeferredOperationMaxConcurrencyKHR" where
    type VkProcType "vkGetDeferredOperationMaxConcurrencyKHR" =
         HS_vkGetDeferredOperationMaxConcurrencyKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetDeferredOperationMaxConcurrencyKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetDeferredOperationMaxConcurrencyKHR")
-> VkProcType "vkGetDeferredOperationMaxConcurrencyKHR"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkGetDeferredOperationMaxConcurrencyKHR")
-> VkProcType "vkGetDeferredOperationMaxConcurrencyKHR"
PFN_vkGetDeferredOperationMaxConcurrencyKHR
-> HS_vkGetDeferredOperationMaxConcurrencyKHR
unwrapVkGetDeferredOperationMaxConcurrencyKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetDeferredOperationMaxConcurrencyKHR")
-> VkProcType "vkGetDeferredOperationMaxConcurrencyKHR"
unwrapVkProcPtrSafe
      = FunPtr (VkProcType "vkGetDeferredOperationMaxConcurrencyKHR")
-> VkProcType "vkGetDeferredOperationMaxConcurrencyKHR"
PFN_vkGetDeferredOperationMaxConcurrencyKHR
-> HS_vkGetDeferredOperationMaxConcurrencyKHR
unwrapVkGetDeferredOperationMaxConcurrencyKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetDeferredOperationResultKHR :: CString

pattern $bVkGetDeferredOperationResultKHR :: CString
$mVkGetDeferredOperationResultKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetDeferredOperationResultKHR <-
        (is_VkGetDeferredOperationResultKHR -> True)
  where
    VkGetDeferredOperationResultKHR = CString
_VkGetDeferredOperationResultKHR

{-# INLINE _VkGetDeferredOperationResultKHR #-}

_VkGetDeferredOperationResultKHR :: CString
_VkGetDeferredOperationResultKHR :: CString
_VkGetDeferredOperationResultKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetDeferredOperationResultKHR\NUL"#

{-# INLINE is_VkGetDeferredOperationResultKHR #-}

is_VkGetDeferredOperationResultKHR :: CString -> Bool
is_VkGetDeferredOperationResultKHR :: CString -> Bool
is_VkGetDeferredOperationResultKHR
  = (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
_VkGetDeferredOperationResultKHR

type VkGetDeferredOperationResultKHR =
     "vkGetDeferredOperationResultKHR"

-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
--
--   > VkResult vkGetDeferredOperationResultKHR
--   >     ( VkDevice device
--   >     , VkDeferredOperationKHR operation
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR registry at www.khronos.org>
type HS_vkGetDeferredOperationResultKHR =
     VkDevice -- ^ device
              -> VkDeferredOperationKHR -- ^ operation
                                        -> IO VkResult

type PFN_vkGetDeferredOperationResultKHR =
     FunPtr HS_vkGetDeferredOperationResultKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetDeferredOperationResultKHRUnsafe ::
               PFN_vkGetDeferredOperationResultKHR ->
                 HS_vkGetDeferredOperationResultKHR

foreign import ccall safe "dynamic"
               unwrapVkGetDeferredOperationResultKHRSafe ::
               PFN_vkGetDeferredOperationResultKHR ->
                 HS_vkGetDeferredOperationResultKHR

instance VulkanProc "vkGetDeferredOperationResultKHR" where
    type VkProcType "vkGetDeferredOperationResultKHR" =
         HS_vkGetDeferredOperationResultKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetDeferredOperationResultKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetDeferredOperationResultKHR")
-> VkProcType "vkGetDeferredOperationResultKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkGetDeferredOperationResultKHR")
-> VkProcType "vkGetDeferredOperationResultKHR"
PFN_vkGetDeferredOperationResultKHR
-> HS_vkGetDeferredOperationResultKHR
unwrapVkGetDeferredOperationResultKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetDeferredOperationResultKHR")
-> VkProcType "vkGetDeferredOperationResultKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkGetDeferredOperationResultKHR")
-> VkProcType "vkGetDeferredOperationResultKHR"
PFN_vkGetDeferredOperationResultKHR
-> HS_vkGetDeferredOperationResultKHR
unwrapVkGetDeferredOperationResultKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkDeferredOperationJoinKHR :: CString

pattern $bVkDeferredOperationJoinKHR :: CString
$mVkDeferredOperationJoinKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkDeferredOperationJoinKHR <-
        (is_VkDeferredOperationJoinKHR -> True)
  where
    VkDeferredOperationJoinKHR = CString
_VkDeferredOperationJoinKHR

{-# INLINE _VkDeferredOperationJoinKHR #-}

_VkDeferredOperationJoinKHR :: CString
_VkDeferredOperationJoinKHR :: CString
_VkDeferredOperationJoinKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkDeferredOperationJoinKHR\NUL"#

{-# INLINE is_VkDeferredOperationJoinKHR #-}

is_VkDeferredOperationJoinKHR :: CString -> Bool
is_VkDeferredOperationJoinKHR :: CString -> Bool
is_VkDeferredOperationJoinKHR
  = (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
_VkDeferredOperationJoinKHR

type VkDeferredOperationJoinKHR = "vkDeferredOperationJoinKHR"

-- | Success codes: 'VK_SUCCESS', 'VK_THREAD_DONE_KHR', 'VK_THREAD_IDLE_KHR'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkDeferredOperationJoinKHR
--   >     ( VkDevice device
--   >     , VkDeferredOperationKHR operation
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR registry at www.khronos.org>
type HS_vkDeferredOperationJoinKHR =
     VkDevice -- ^ device
              -> VkDeferredOperationKHR -- ^ operation
                                        -> IO VkResult

type PFN_vkDeferredOperationJoinKHR =
     FunPtr HS_vkDeferredOperationJoinKHR

foreign import ccall unsafe "dynamic"
               unwrapVkDeferredOperationJoinKHRUnsafe ::
               PFN_vkDeferredOperationJoinKHR -> HS_vkDeferredOperationJoinKHR

foreign import ccall safe "dynamic"
               unwrapVkDeferredOperationJoinKHRSafe ::
               PFN_vkDeferredOperationJoinKHR -> HS_vkDeferredOperationJoinKHR

instance VulkanProc "vkDeferredOperationJoinKHR" where
    type VkProcType "vkDeferredOperationJoinKHR" =
         HS_vkDeferredOperationJoinKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkDeferredOperationJoinKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkDeferredOperationJoinKHR")
-> VkProcType "vkDeferredOperationJoinKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkDeferredOperationJoinKHR")
-> VkProcType "vkDeferredOperationJoinKHR"
PFN_vkGetDeferredOperationResultKHR
-> HS_vkGetDeferredOperationResultKHR
unwrapVkDeferredOperationJoinKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkDeferredOperationJoinKHR")
-> VkProcType "vkDeferredOperationJoinKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkDeferredOperationJoinKHR")
-> VkProcType "vkDeferredOperationJoinKHR"
PFN_vkGetDeferredOperationResultKHR
-> HS_vkGetDeferredOperationResultKHR
unwrapVkDeferredOperationJoinKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

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

pattern $bVK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3

type VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3

pattern VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: CString

pattern $bVK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: CString
$mVK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME <-
        (is_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME -> True)
  where
    VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
      = CString
_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME

{-# INLINE _VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME #-}

_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: CString
_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: CString
_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_KHR_deferred_host_operations\NUL"#

{-# INLINE is_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME #-}

is_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME ::
                                                  CString -> Bool
is_VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_DEFERRED_HOST_OPERATIONS_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_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME

type VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME =
     "VK_KHR_deferred_host_operations"

pattern VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR =
        VkStructureType 1000268000

pattern VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR :: VkObjectType

pattern $bVK_OBJECT_TYPE_DEFERRED_OPERATION_KHR :: VkObjectType
$mVK_OBJECT_TYPE_DEFERRED_OPERATION_KHR :: forall {r}. VkObjectType -> (Void# -> r) -> (Void# -> r) -> r
VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR =
        VkObjectType 1000268000

pattern VK_THREAD_IDLE_KHR :: VkResult

pattern $bVK_THREAD_IDLE_KHR :: VkResult
$mVK_THREAD_IDLE_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_THREAD_IDLE_KHR = VkResult 1000268000

pattern VK_THREAD_DONE_KHR :: VkResult

pattern $bVK_THREAD_DONE_KHR :: VkResult
$mVK_THREAD_DONE_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_THREAD_DONE_KHR = VkResult 1000268001

pattern VK_OPERATION_DEFERRED_KHR :: VkResult

pattern $bVK_OPERATION_DEFERRED_KHR :: VkResult
$mVK_OPERATION_DEFERRED_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_OPERATION_DEFERRED_KHR = VkResult 1000268002

pattern VK_OPERATION_NOT_DEFERRED_KHR :: VkResult

pattern $bVK_OPERATION_NOT_DEFERRED_KHR :: VkResult
$mVK_OPERATION_NOT_DEFERRED_KHR :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_OPERATION_NOT_DEFERRED_KHR = VkResult 1000268003