{-# 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_EXT_private_data
       (-- * Vulkan extension: @VK_EXT_private_data@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Matthew Rusch @mattruschnv@
        --
        -- author: @NV@
        --
        -- type: @device@
        --
        -- Extension number: @296@
        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,
        VkDevicePrivateDataCreateInfoEXT,
        VkDeviceDiagnosticsConfigBitmaskNV(..), VkDeviceEventTypeEXT(..),
        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
        VkDeviceDiagnosticsConfigFlagBitsNV(),
        VkDeviceDiagnosticsConfigFlagsNV(),
        VkDeviceGroupPresentModeFlagBitsKHR(),
        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
        VkDeviceQueueCreateInfo, VkPhysicalDeviceFeatures,
        VkPhysicalDeviceFeatures2, VkPhysicalDevicePrivateDataFeaturesEXT,
        VkPrivateDataSlotCreateBitmaskEXT(..),
        VkPrivateDataSlotCreateFlagBitsEXT(),
        VkPrivateDataSlotCreateFlagsEXT(), VkPrivateDataSlotCreateInfoEXT,
        VkStructureType(..), -- > #include "vk_platform.h"
                             VkCreatePrivateDataSlotEXT,
        pattern VkCreatePrivateDataSlotEXT, HS_vkCreatePrivateDataSlotEXT,
        PFN_vkCreatePrivateDataSlotEXT, VkDestroyPrivateDataSlotEXT,
        pattern VkDestroyPrivateDataSlotEXT,
        HS_vkDestroyPrivateDataSlotEXT, PFN_vkDestroyPrivateDataSlotEXT,
        VkSetPrivateDataEXT, pattern VkSetPrivateDataEXT,
        HS_vkSetPrivateDataEXT, PFN_vkSetPrivateDataEXT,
        VkGetPrivateDataEXT, pattern VkGetPrivateDataEXT,
        HS_vkGetPrivateDataEXT, PFN_vkGetPrivateDataEXT,
        VkInternalAllocationType(..), VkObjectType(..), 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_EXT_PRIVATE_DATA_SPEC_VERSION,
        pattern VK_EXT_PRIVATE_DATA_SPEC_VERSION,
        VK_EXT_PRIVATE_DATA_EXTENSION_NAME,
        pattern VK_EXT_PRIVATE_DATA_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT,
        pattern VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT,
        pattern VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT,
        pattern VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT)
       where
import GHC.Ptr                                                   (Ptr (..))
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Proc                              (VulkanProc (..))
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Bitmasks
import Graphics.Vulkan.Types.Enum.Device
import Graphics.Vulkan.Types.Enum.InternalAllocationType
import Graphics.Vulkan.Types.Enum.ObjectType
import Graphics.Vulkan.Types.Enum.PrivateDataSlotCreateFlagsEXT
import Graphics.Vulkan.Types.Enum.Result
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.Device                       (VkDeviceCreateInfo,
                                                                  VkDevicePrivateDataCreateInfoEXT,
                                                                  VkDeviceQueueCreateInfo)
import Graphics.Vulkan.Types.Struct.PhysicalDevice               (VkPhysicalDeviceFeatures2,
                                                                  VkPhysicalDevicePrivateDataFeaturesEXT)
import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures       (VkPhysicalDeviceFeatures)
import Graphics.Vulkan.Types.Struct.PrivateDataSlotCreateInfoEXT

pattern VkCreatePrivateDataSlotEXT :: CString

pattern $bVkCreatePrivateDataSlotEXT :: CString
$mVkCreatePrivateDataSlotEXT :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCreatePrivateDataSlotEXT <-
        (is_VkCreatePrivateDataSlotEXT -> True)
  where
    VkCreatePrivateDataSlotEXT = CString
_VkCreatePrivateDataSlotEXT

{-# INLINE _VkCreatePrivateDataSlotEXT #-}

_VkCreatePrivateDataSlotEXT :: CString
_VkCreatePrivateDataSlotEXT :: CString
_VkCreatePrivateDataSlotEXT = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCreatePrivateDataSlotEXT\NUL"#

{-# INLINE is_VkCreatePrivateDataSlotEXT #-}

is_VkCreatePrivateDataSlotEXT :: CString -> Bool
is_VkCreatePrivateDataSlotEXT :: CString -> Bool
is_VkCreatePrivateDataSlotEXT
  = (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
_VkCreatePrivateDataSlotEXT

type VkCreatePrivateDataSlotEXT = "vkCreatePrivateDataSlotEXT"

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

type PFN_vkCreatePrivateDataSlotEXT =
     FunPtr HS_vkCreatePrivateDataSlotEXT

foreign import ccall unsafe "dynamic"
               unwrapVkCreatePrivateDataSlotEXTUnsafe ::
               PFN_vkCreatePrivateDataSlotEXT -> HS_vkCreatePrivateDataSlotEXT

foreign import ccall safe "dynamic"
               unwrapVkCreatePrivateDataSlotEXTSafe ::
               PFN_vkCreatePrivateDataSlotEXT -> HS_vkCreatePrivateDataSlotEXT

instance VulkanProc "vkCreatePrivateDataSlotEXT" where
    type VkProcType "vkCreatePrivateDataSlotEXT" =
         HS_vkCreatePrivateDataSlotEXT
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCreatePrivateDataSlotEXT

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCreatePrivateDataSlotEXT")
-> VkProcType "vkCreatePrivateDataSlotEXT"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCreatePrivateDataSlotEXT")
-> VkProcType "vkCreatePrivateDataSlotEXT"
PFN_vkCreatePrivateDataSlotEXT -> HS_vkCreatePrivateDataSlotEXT
unwrapVkCreatePrivateDataSlotEXTUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCreatePrivateDataSlotEXT")
-> VkProcType "vkCreatePrivateDataSlotEXT"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCreatePrivateDataSlotEXT")
-> VkProcType "vkCreatePrivateDataSlotEXT"
PFN_vkCreatePrivateDataSlotEXT -> HS_vkCreatePrivateDataSlotEXT
unwrapVkCreatePrivateDataSlotEXTSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkDestroyPrivateDataSlotEXT :: CString

pattern $bVkDestroyPrivateDataSlotEXT :: CString
$mVkDestroyPrivateDataSlotEXT :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkDestroyPrivateDataSlotEXT <-
        (is_VkDestroyPrivateDataSlotEXT -> True)
  where
    VkDestroyPrivateDataSlotEXT = CString
_VkDestroyPrivateDataSlotEXT

{-# INLINE _VkDestroyPrivateDataSlotEXT #-}

_VkDestroyPrivateDataSlotEXT :: CString
_VkDestroyPrivateDataSlotEXT :: CString
_VkDestroyPrivateDataSlotEXT
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkDestroyPrivateDataSlotEXT\NUL"#

{-# INLINE is_VkDestroyPrivateDataSlotEXT #-}

is_VkDestroyPrivateDataSlotEXT :: CString -> Bool
is_VkDestroyPrivateDataSlotEXT :: CString -> Bool
is_VkDestroyPrivateDataSlotEXT
  = (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
_VkDestroyPrivateDataSlotEXT

type VkDestroyPrivateDataSlotEXT = "vkDestroyPrivateDataSlotEXT"

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

type PFN_vkDestroyPrivateDataSlotEXT =
     FunPtr HS_vkDestroyPrivateDataSlotEXT

foreign import ccall unsafe "dynamic"
               unwrapVkDestroyPrivateDataSlotEXTUnsafe ::
               PFN_vkDestroyPrivateDataSlotEXT -> HS_vkDestroyPrivateDataSlotEXT

foreign import ccall safe "dynamic"
               unwrapVkDestroyPrivateDataSlotEXTSafe ::
               PFN_vkDestroyPrivateDataSlotEXT -> HS_vkDestroyPrivateDataSlotEXT

instance VulkanProc "vkDestroyPrivateDataSlotEXT" where
    type VkProcType "vkDestroyPrivateDataSlotEXT" =
         HS_vkDestroyPrivateDataSlotEXT
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkDestroyPrivateDataSlotEXT

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkDestroyPrivateDataSlotEXT")
-> VkProcType "vkDestroyPrivateDataSlotEXT"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkDestroyPrivateDataSlotEXT")
-> VkProcType "vkDestroyPrivateDataSlotEXT"
PFN_vkDestroyPrivateDataSlotEXT -> HS_vkDestroyPrivateDataSlotEXT
unwrapVkDestroyPrivateDataSlotEXTUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkDestroyPrivateDataSlotEXT")
-> VkProcType "vkDestroyPrivateDataSlotEXT"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkDestroyPrivateDataSlotEXT")
-> VkProcType "vkDestroyPrivateDataSlotEXT"
PFN_vkDestroyPrivateDataSlotEXT -> HS_vkDestroyPrivateDataSlotEXT
unwrapVkDestroyPrivateDataSlotEXTSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkSetPrivateDataEXT :: CString

pattern $bVkSetPrivateDataEXT :: CString
$mVkSetPrivateDataEXT :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkSetPrivateDataEXT <- (is_VkSetPrivateDataEXT -> True)
  where
    VkSetPrivateDataEXT = CString
_VkSetPrivateDataEXT

{-# INLINE _VkSetPrivateDataEXT #-}

_VkSetPrivateDataEXT :: CString
_VkSetPrivateDataEXT :: CString
_VkSetPrivateDataEXT = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkSetPrivateDataEXT\NUL"#

{-# INLINE is_VkSetPrivateDataEXT #-}

is_VkSetPrivateDataEXT :: CString -> Bool
is_VkSetPrivateDataEXT :: CString -> Bool
is_VkSetPrivateDataEXT = (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
_VkSetPrivateDataEXT

type VkSetPrivateDataEXT = "vkSetPrivateDataEXT"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
--
--   > VkResult vkSetPrivateDataEXT
--   >     ( VkDevice device
--   >     , VkObjectType objectType
--   >     , uint64_t objectHandle
--   >     , VkPrivateDataSlotEXT privateDataSlot
--   >     , uint64_t data
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkSetPrivateDataEXT vkSetPrivateDataEXT registry at www.khronos.org>
type HS_vkSetPrivateDataEXT =
     VkDevice -- ^ device
              ->
       VkObjectType -- ^ objectType
                    ->
         Word64 -- ^ objectHandle
                -> VkPrivateDataSlotEXT -- ^ privateDataSlot
                                        -> Word64 -- ^ data
                                                  -> IO VkResult

type PFN_vkSetPrivateDataEXT = FunPtr HS_vkSetPrivateDataEXT

foreign import ccall unsafe "dynamic"
               unwrapVkSetPrivateDataEXTUnsafe ::
               PFN_vkSetPrivateDataEXT -> HS_vkSetPrivateDataEXT

foreign import ccall safe "dynamic" unwrapVkSetPrivateDataEXTSafe
               :: PFN_vkSetPrivateDataEXT -> HS_vkSetPrivateDataEXT

instance VulkanProc "vkSetPrivateDataEXT" where
    type VkProcType "vkSetPrivateDataEXT" = HS_vkSetPrivateDataEXT
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkSetPrivateDataEXT

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkSetPrivateDataEXT")
-> VkProcType "vkSetPrivateDataEXT"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkSetPrivateDataEXT")
-> VkProcType "vkSetPrivateDataEXT"
PFN_vkSetPrivateDataEXT -> HS_vkSetPrivateDataEXT
unwrapVkSetPrivateDataEXTUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkSetPrivateDataEXT")
-> VkProcType "vkSetPrivateDataEXT"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkSetPrivateDataEXT")
-> VkProcType "vkSetPrivateDataEXT"
PFN_vkSetPrivateDataEXT -> HS_vkSetPrivateDataEXT
unwrapVkSetPrivateDataEXTSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPrivateDataEXT :: CString

pattern $bVkGetPrivateDataEXT :: CString
$mVkGetPrivateDataEXT :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPrivateDataEXT <- (is_VkGetPrivateDataEXT -> True)
  where
    VkGetPrivateDataEXT = CString
_VkGetPrivateDataEXT

{-# INLINE _VkGetPrivateDataEXT #-}

_VkGetPrivateDataEXT :: CString
_VkGetPrivateDataEXT :: CString
_VkGetPrivateDataEXT = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetPrivateDataEXT\NUL"#

{-# INLINE is_VkGetPrivateDataEXT #-}

is_VkGetPrivateDataEXT :: CString -> Bool
is_VkGetPrivateDataEXT :: CString -> Bool
is_VkGetPrivateDataEXT = (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
_VkGetPrivateDataEXT

type VkGetPrivateDataEXT = "vkGetPrivateDataEXT"

-- | > void vkGetPrivateDataEXT
--   >     ( VkDevice device
--   >     , VkObjectType objectType
--   >     , uint64_t objectHandle
--   >     , VkPrivateDataSlotEXT privateDataSlot
--   >     , uint64_t* pData
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPrivateDataEXT vkGetPrivateDataEXT registry at www.khronos.org>
type HS_vkGetPrivateDataEXT =
     VkDevice -- ^ device
              ->
       VkObjectType -- ^ objectType
                    ->
         Word64 -- ^ objectHandle
                -> VkPrivateDataSlotEXT -- ^ privateDataSlot
                                        -> Ptr Word64 -- ^ pData
                                                      -> IO ()

type PFN_vkGetPrivateDataEXT = FunPtr HS_vkGetPrivateDataEXT

foreign import ccall unsafe "dynamic"
               unwrapVkGetPrivateDataEXTUnsafe ::
               PFN_vkGetPrivateDataEXT -> HS_vkGetPrivateDataEXT

foreign import ccall safe "dynamic" unwrapVkGetPrivateDataEXTSafe
               :: PFN_vkGetPrivateDataEXT -> HS_vkGetPrivateDataEXT

instance VulkanProc "vkGetPrivateDataEXT" where
    type VkProcType "vkGetPrivateDataEXT" = HS_vkGetPrivateDataEXT
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetPrivateDataEXT

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetPrivateDataEXT")
-> VkProcType "vkGetPrivateDataEXT"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkGetPrivateDataEXT")
-> VkProcType "vkGetPrivateDataEXT"
PFN_vkGetPrivateDataEXT -> HS_vkGetPrivateDataEXT
unwrapVkGetPrivateDataEXTUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetPrivateDataEXT")
-> VkProcType "vkGetPrivateDataEXT"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkGetPrivateDataEXT")
-> VkProcType "vkGetPrivateDataEXT"
PFN_vkGetPrivateDataEXT -> HS_vkGetPrivateDataEXT
unwrapVkGetPrivateDataEXTSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

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

pattern $bVK_EXT_PRIVATE_DATA_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_EXT_PRIVATE_DATA_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1

type VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1

pattern VK_EXT_PRIVATE_DATA_EXTENSION_NAME :: CString

pattern $bVK_EXT_PRIVATE_DATA_EXTENSION_NAME :: CString
$mVK_EXT_PRIVATE_DATA_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_EXT_PRIVATE_DATA_EXTENSION_NAME <-
        (is_VK_EXT_PRIVATE_DATA_EXTENSION_NAME -> True)
  where
    VK_EXT_PRIVATE_DATA_EXTENSION_NAME
      = CString
_VK_EXT_PRIVATE_DATA_EXTENSION_NAME

{-# INLINE _VK_EXT_PRIVATE_DATA_EXTENSION_NAME #-}

_VK_EXT_PRIVATE_DATA_EXTENSION_NAME :: CString
_VK_EXT_PRIVATE_DATA_EXTENSION_NAME :: CString
_VK_EXT_PRIVATE_DATA_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_EXT_private_data\NUL"#

{-# INLINE is_VK_EXT_PRIVATE_DATA_EXTENSION_NAME #-}

is_VK_EXT_PRIVATE_DATA_EXTENSION_NAME :: CString -> Bool
is_VK_EXT_PRIVATE_DATA_EXTENSION_NAME :: CString -> Bool
is_VK_EXT_PRIVATE_DATA_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_PRIVATE_DATA_EXTENSION_NAME

type VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data"

pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT :: VkStructureType
$mVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT
        = VkStructureType 1000295000

pattern VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT =
        VkStructureType 1000295001

pattern VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT :: VkStructureType
$mVK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT =
        VkStructureType 1000295002

pattern VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT :: VkObjectType

pattern $bVK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT :: VkObjectType
$mVK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT :: forall {r}. VkObjectType -> (Void# -> r) -> (Void# -> r) -> r
VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT =
        VkObjectType 1000295000