{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE DataKinds       #-}
{-# LANGUAGE MagicHash       #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE Strict          #-}
{-# LANGUAGE ViewPatterns    #-}
module Graphics.Vulkan.Ext.VK_EXT_pipeline_creation_cache_control
       (-- * Vulkan extension: @VK_EXT_pipeline_creation_cache_control@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Gregory Grebe @grgrebe_amd@
        --
        -- author: @AMD@
        --
        -- type: @device@
        --
        -- Extension number: @298@
        module Graphics.Vulkan.Marshal, AHardwareBuffer(),
        ANativeWindow(), CAMetalLayer(), VkBool32(..), VkDeviceAddress(..),
        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
        VkBuildAccelerationStructureFlagsNV(..),
        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
        VkDebugUtilsMessengerCreateFlagsEXT(..),
        VkDescriptorBindingFlagsEXT(..), VkDescriptorPoolResetFlags(..),
        VkDescriptorUpdateTemplateCreateFlags(..),
        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
        VkDeviceCreateFlags(..), VkDirectFBSurfaceCreateFlagsEXT(..),
        VkDisplayModeCreateFlagsKHR(..),
        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
        VkExternalFenceFeatureFlagsKHR(..),
        VkExternalFenceHandleTypeFlagsKHR(..),
        VkExternalMemoryFeatureFlagsKHR(..),
        VkExternalMemoryHandleTypeFlagsKHR(..),
        VkExternalSemaphoreFeatureFlagsKHR(..),
        VkExternalSemaphoreHandleTypeFlagsKHR(..),
        VkFenceImportFlagsKHR(..), VkGeometryFlagsNV(..),
        VkGeometryInstanceFlagsNV(..), VkHeadlessSurfaceCreateFlagsEXT(..),
        VkIOSSurfaceCreateFlagsMVK(..),
        VkImagePipeSurfaceCreateFlagsFUCHSIA(..),
        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
        VkMetalSurfaceCreateFlagsEXT(..), VkPeerMemoryFeatureFlagsKHR(..),
        VkPipelineColorBlendStateCreateFlags(..),
        VkPipelineCoverageModulationStateCreateFlagsNV(..),
        VkPipelineCoverageReductionStateCreateFlagsNV(..),
        VkPipelineCoverageToColorStateCreateFlagsNV(..),
        VkPipelineDepthStencilStateCreateFlags(..),
        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
        VkPipelineDynamicStateCreateFlags(..),
        VkPipelineInputAssemblyStateCreateFlags(..),
        VkPipelineLayoutCreateFlags(..),
        VkPipelineMultisampleStateCreateFlags(..),
        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
        VkPipelineRasterizationDepthClipStateCreateFlagsEXT(..),
        VkPipelineRasterizationStateCreateFlags(..),
        VkPipelineRasterizationStateStreamCreateFlagsEXT(..),
        VkPipelineTessellationStateCreateFlags(..),
        VkPipelineVertexInputStateCreateFlags(..),
        VkPipelineViewportStateCreateFlags(..),
        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
        VkQueryPoolCreateFlags(..), VkResolveModeFlagsKHR(..),
        VkSemaphoreCreateFlags(..), VkSemaphoreImportFlagsKHR(..),
        VkSemaphoreWaitFlagsKHR(..),
        VkStreamDescriptorSurfaceCreateFlagsGGP(..),
        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
        VkWaylandSurfaceCreateFlagsKHR(..),
        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
        VkXlibSurfaceCreateFlagsKHR(..), VkDeviceCreateInfo,
        VkDeviceDiagnosticsConfigBitmaskNV(..), VkDeviceEventTypeEXT(..),
        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
        VkDeviceDiagnosticsConfigFlagBitsNV(),
        VkDeviceDiagnosticsConfigFlagsNV(),
        VkDeviceGroupPresentModeFlagBitsKHR(),
        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
        VkDeviceQueueCreateInfo, VkPhysicalDeviceFeatures,
        VkPhysicalDeviceFeatures2,
        VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT,
        VkStructureType(..),
        -- > #include "vk_platform.h"
        VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION,
        pattern VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION,
        VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME,
        pattern VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,
        pattern VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT,
        pattern VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT,
        pattern VK_PIPELINE_COMPILE_REQUIRED_EXT,
        pattern VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT,
        pattern VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT)
       where
import GHC.Ptr                                             (Ptr (..))
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Bitmasks
import Graphics.Vulkan.Types.Enum.Device
import Graphics.Vulkan.Types.Enum.Pipeline                 (VkPipelineCacheCreateBitmask (..),
                                                            VkPipelineCreateBitmask (..))
import Graphics.Vulkan.Types.Enum.Result                   (VkResult (..))
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo, VkDeviceQueueCreateInfo)
import Graphics.Vulkan.Types.Struct.PhysicalDevice         (VkPhysicalDeviceFeatures2,
                                                            VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT)
import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)

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

pattern $bVK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3

type VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3

pattern VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME ::
        CString

pattern $bVK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: CString
$mVK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME <-
        (is_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME -> True)
  where
    VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME
      = CString
_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME

{-# INLINE _VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME
           #-}

_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: CString
_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: CString
_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_EXT_pipeline_creation_cache_control\NUL"#

{-# INLINE is_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME
           #-}

is_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME ::
                                                         CString -> Bool
is_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: CString -> Bool
is_VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_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_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME

type VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME =
     "VK_EXT_pipeline_creation_cache_control"

pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT :: VkStructureType
$mVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT
        = VkStructureType 1000297000

-- | bitpos = @8@
pattern VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
        :: VkPipelineCreateBitmask a

pattern $bVK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT :: forall (a :: FlagType). VkPipelineCreateBitmask a
$mVK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT :: forall {r} {a :: FlagType}.
VkPipelineCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
        = VkPipelineCreateBitmask 256

-- | bitpos = @9@
pattern VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT ::
        VkPipelineCreateBitmask a

pattern $bVK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT :: forall (a :: FlagType). VkPipelineCreateBitmask a
$mVK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT :: forall {r} {a :: FlagType}.
VkPipelineCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT =
        VkPipelineCreateBitmask 512

pattern VK_PIPELINE_COMPILE_REQUIRED_EXT :: VkResult

pattern $bVK_PIPELINE_COMPILE_REQUIRED_EXT :: VkResult
$mVK_PIPELINE_COMPILE_REQUIRED_EXT :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_COMPILE_REQUIRED_EXT = VkResult 1000297000

pattern $bVK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT :: VkResult
$mVK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT :: forall {r}. VkResult -> (Void# -> r) -> (Void# -> r) -> r
VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT =
        VK_PIPELINE_COMPILE_REQUIRED_EXT

-- | bitpos = @0@
pattern VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT ::
        VkPipelineCacheCreateBitmask a

pattern $bVK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT :: forall (a :: FlagType). VkPipelineCacheCreateBitmask a
$mVK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT :: forall {r} {a :: FlagType}.
VkPipelineCacheCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT =
        VkPipelineCacheCreateBitmask 1