{-# 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_performance_query
       (-- * Vulkan extension: @VK_KHR_performance_query@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Alon Or-bach @alonorbach@
        --
        -- author: @KHR@
        --
        -- type: @device@
        --
        -- Extension number: @117@
        --
        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
        --

        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
        module Graphics.Vulkan.Marshal,
        VkAcquireProfilingLockBitmaskKHR(..),
        VkAcquireProfilingLockFlagBitsKHR(),
        VkAcquireProfilingLockFlagsKHR(), VkAcquireProfilingLockInfoKHR,
        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, VkPerformanceConfigurationTypeINTEL(..),
        VkPerformanceCounterDescriptionBitmaskKHR(..),
        VkPerformanceCounterScopeKHR(..),
        VkPerformanceCounterStorageKHR(..),
        VkPerformanceCounterUnitKHR(..),
        VkPerformanceOverrideTypeINTEL(..),
        VkPerformanceParameterTypeINTEL(..),
        VkPerformanceValueTypeINTEL(..),
        pattern VK_QUERY_SCOPE_COMMAND_BUFFER_KHR,
        pattern VK_QUERY_SCOPE_COMMAND_KHR,
        pattern VK_QUERY_SCOPE_RENDER_PASS_KHR,
        VkPerformanceCounterDescriptionFlagBitsKHR(),
        VkPerformanceCounterDescriptionFlagsKHR(),
        VkPerformanceCounterDescriptionKHR, VkPerformanceCounterKHR,
        VkPerformanceCounterResultKHR, VkPerformanceQuerySubmitInfoKHR,
        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures2,
        VkPhysicalDeviceLimits,
        VkPhysicalDevicePerformanceQueryFeaturesKHR,
        VkPhysicalDevicePerformanceQueryPropertiesKHR,
        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
        VkPipelineCreateBitmask(..),
        VkPipelineCreationFeedbackBitmaskEXT(..),
        VkPipelineExecutableStatisticFormatKHR(..),
        VkPipelineStageBitmask(..), VkPipelineCacheCreateBitmask(..),
        VkPipelineCacheCreateFlagBits(), VkPipelineCacheCreateFlags(),
        VkPipelineCompilerControlBitmaskAMD(..),
        VkPipelineCompilerControlFlagBitsAMD(),
        VkPipelineCompilerControlFlagsAMD(), VkPipelineCreateFlagBits(),
        VkPipelineCreateFlags(), VkPipelineCreationFeedbackFlagBitsEXT(),
        VkPipelineCreationFeedbackFlagsEXT(),
        VkPipelineShaderStageCreateBitmask(..),
        VkPipelineShaderStageCreateFlagBits(),
        VkPipelineShaderStageCreateFlags(), VkPipelineStageFlagBits(),
        VkPipelineStageFlags(), VkQueryControlBitmask(..),
        VkQueryPipelineStatisticBitmask(..),
        VkQueryPoolSamplingModeINTEL(..), VkQueryResultBitmask(..),
        VkQueryType(..), VkQueryControlFlagBits(), VkQueryControlFlags(),
        VkQueryPipelineStatisticFlagBits(),
        VkQueryPipelineStatisticFlags(), VkQueryPoolCreateFlagBits(..),
        VkQueryResultFlagBits(), VkQueryResultFlags(),
        VkQueryPoolCreateInfo, VkQueryPoolPerformanceCreateInfoKHR,
        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
        VkSampleCountFlags(), VkStructureType(..), VkSubmitInfo,
        -- > #include "vk_platform.h"
        VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
        pattern VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
        HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
        PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
        VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
        pattern VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
        HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
        PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
        VkAcquireProfilingLockKHR, pattern VkAcquireProfilingLockKHR,
        HS_vkAcquireProfilingLockKHR, PFN_vkAcquireProfilingLockKHR,
        VkReleaseProfilingLockKHR, pattern VkReleaseProfilingLockKHR,
        HS_vkReleaseProfilingLockKHR, PFN_vkReleaseProfilingLockKHR,
        VkResult(..), 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(),
        VkAcquireNextImageInfoKHR,
        VkPerformanceConfigurationAcquireInfoINTEL,
        VkPerformanceMarkerInfoINTEL, VkPerformanceOverrideInfoINTEL,
        VkPerformanceStreamMarkerInfoINTEL, VkPerformanceValueDataINTEL,
        VkPerformanceValueINTEL, VkQueryPoolCreateInfoINTEL,
        VkQueryPoolPerformanceQueryCreateInfoINTEL,
        VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION,
        pattern VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION,
        VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME,
        pattern VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME,
        pattern VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR,
        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
        pattern VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR,
        pattern VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_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.Bitmasks
import Graphics.Vulkan.Types.Enum.AcquireProfilingLockFlagsKHR
import Graphics.Vulkan.Types.Enum.Device
import Graphics.Vulkan.Types.Enum.Performance
import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
import Graphics.Vulkan.Types.Enum.Pipeline
import Graphics.Vulkan.Types.Enum.Query
import Graphics.Vulkan.Types.Enum.Result
import Graphics.Vulkan.Types.Enum.SampleCountFlags
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Handles
import Graphics.Vulkan.Types.Struct.Acquire
import Graphics.Vulkan.Types.Struct.Device                     (VkDeviceCreateInfo,
                                                                VkDeviceQueueCreateInfo)
import Graphics.Vulkan.Types.Struct.Performance
import Graphics.Vulkan.Types.Struct.PhysicalDevice             (VkPhysicalDeviceFeatures2,
                                                                VkPhysicalDeviceLimits,
                                                                VkPhysicalDevicePerformanceQueryFeaturesKHR,
                                                                VkPhysicalDevicePerformanceQueryPropertiesKHR,
                                                                VkPhysicalDeviceProperties,
                                                                VkPhysicalDeviceProperties2,
                                                                VkPhysicalDeviceSparseProperties)
import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures     (VkPhysicalDeviceFeatures)
import Graphics.Vulkan.Types.Struct.QueryPool
import Graphics.Vulkan.Types.Struct.SubmitInfo                 (VkSubmitInfo)

pattern VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
        :: CString

pattern $bVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: CString
$mVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
        <-
        (is_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
           -> True)
  where
    VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
      = CString
_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

{-# INLINE _VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
           #-}

_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ::
                                                                 CString
_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: CString
_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr
      Addr#
"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR\NUL"#

{-# INLINE is_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
           #-}

is_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ::
                                                                   CString -> Bool
is_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: CString -> Bool
is_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
  = (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
_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

type VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
     = "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"

-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
--
--   > VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
--   >     ( VkPhysicalDevice physicalDevice
--   >     , uint32_t queueFamilyIndex
--   >     , uint32_t* pCounterCount
--   >     , VkPerformanceCounterKHR* pCounters
--   >     , VkPerformanceCounterDescriptionKHR* pCounterDescriptions
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR registry at www.khronos.org>
type HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
     =
     VkPhysicalDevice -- ^ physicalDevice
                      ->
       Word32 -- ^ queueFamilyIndex
              ->
         Ptr Word32 -- ^ pCounterCount
                    ->
           Ptr VkPerformanceCounterKHR -- ^ pCounters
                                       ->
             Ptr VkPerformanceCounterDescriptionKHR -- ^ pCounterDescriptions
                                                    -> IO VkResult

type PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
     =
     FunPtr
       HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

foreign import ccall unsafe "dynamic"
               unwrapVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRUnsafe
               ::
               PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
                 ->
                 HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

foreign import ccall safe "dynamic"
               unwrapVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRSafe
               ::
               PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
                 ->
                 HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

instance VulkanProc
           "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
         where
    type VkProcType
           "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
         =
         HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
    vkProcSymbol :: CString
vkProcSymbol
      = CString
_VkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr
  (VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")
-> VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
unwrapVkProcPtrUnsafe
      = FunPtr
  (VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")
-> VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
-> HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
unwrapVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr
  (VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")
-> VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
unwrapVkProcPtrSafe
      = FunPtr
  (VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")
-> VkProcType
     "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"
PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
-> HS_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
unwrapVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ::
        CString

pattern $bVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: CString
$mVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR <-
        (is_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ->
           True)
  where
    VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
      = CString
_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

{-# INLINE _VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
           #-}

_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: CString
_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: CString
_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr
      Addr#
"vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\NUL"#

{-# INLINE is_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
           #-}

is_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ::
                                                           CString -> Bool
is_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: CString -> Bool
is_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
  = (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
_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

type VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR =
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"

-- | > void vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
--   >     ( VkPhysicalDevice physicalDevice
--   >     , const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo
--   >     , uint32_t* pNumPasses
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR registry at www.khronos.org>
type HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR =
     VkPhysicalDevice -- ^ physicalDevice
                      ->
       Ptr VkQueryPoolPerformanceCreateInfoKHR -- ^ pPerformanceQueryCreateInfo
                                               -> Ptr Word32 -- ^ pNumPasses
                                                             -> IO ()

type PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR =
     FunPtr HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRUnsafe
               ::
               PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ->
                 HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRSafe
               ::
               PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ->
                 HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

instance VulkanProc
           "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
         where
    type VkProcType
           "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
         = HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
    vkProcSymbol :: CString
vkProcSymbol
      = CString
_VkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr
  (VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")
-> VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
unwrapVkProcPtrUnsafe
      = FunPtr
  (VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")
-> VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
-> HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
unwrapVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr
  (VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")
-> VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
unwrapVkProcPtrSafe
      = FunPtr
  (VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")
-> VkProcType
     "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
-> HS_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
unwrapVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkAcquireProfilingLockKHR :: CString

pattern $bVkAcquireProfilingLockKHR :: CString
$mVkAcquireProfilingLockKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkAcquireProfilingLockKHR <-
        (is_VkAcquireProfilingLockKHR -> True)
  where
    VkAcquireProfilingLockKHR = CString
_VkAcquireProfilingLockKHR

{-# INLINE _VkAcquireProfilingLockKHR #-}

_VkAcquireProfilingLockKHR :: CString
_VkAcquireProfilingLockKHR :: CString
_VkAcquireProfilingLockKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkAcquireProfilingLockKHR\NUL"#

{-# INLINE is_VkAcquireProfilingLockKHR #-}

is_VkAcquireProfilingLockKHR :: CString -> Bool
is_VkAcquireProfilingLockKHR :: CString -> Bool
is_VkAcquireProfilingLockKHR
  = (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
_VkAcquireProfilingLockKHR

type VkAcquireProfilingLockKHR = "vkAcquireProfilingLockKHR"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_TIMEOUT'.
--
--   > VkResult vkAcquireProfilingLockKHR
--   >     ( VkDevice device
--   >     , const VkAcquireProfilingLockInfoKHR* pInfo
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR registry at www.khronos.org>
type HS_vkAcquireProfilingLockKHR =
     VkDevice -- ^ device
              -> Ptr VkAcquireProfilingLockInfoKHR -- ^ pInfo
                                                   -> IO VkResult

type PFN_vkAcquireProfilingLockKHR =
     FunPtr HS_vkAcquireProfilingLockKHR

foreign import ccall unsafe "dynamic"
               unwrapVkAcquireProfilingLockKHRUnsafe ::
               PFN_vkAcquireProfilingLockKHR -> HS_vkAcquireProfilingLockKHR

foreign import ccall safe "dynamic"
               unwrapVkAcquireProfilingLockKHRSafe ::
               PFN_vkAcquireProfilingLockKHR -> HS_vkAcquireProfilingLockKHR

instance VulkanProc "vkAcquireProfilingLockKHR" where
    type VkProcType "vkAcquireProfilingLockKHR" =
         HS_vkAcquireProfilingLockKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkAcquireProfilingLockKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkAcquireProfilingLockKHR")
-> VkProcType "vkAcquireProfilingLockKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkAcquireProfilingLockKHR")
-> VkProcType "vkAcquireProfilingLockKHR"
PFN_vkAcquireProfilingLockKHR -> HS_vkAcquireProfilingLockKHR
unwrapVkAcquireProfilingLockKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkAcquireProfilingLockKHR")
-> VkProcType "vkAcquireProfilingLockKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkAcquireProfilingLockKHR")
-> VkProcType "vkAcquireProfilingLockKHR"
PFN_vkAcquireProfilingLockKHR -> HS_vkAcquireProfilingLockKHR
unwrapVkAcquireProfilingLockKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkReleaseProfilingLockKHR :: CString

pattern $bVkReleaseProfilingLockKHR :: CString
$mVkReleaseProfilingLockKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkReleaseProfilingLockKHR <-
        (is_VkReleaseProfilingLockKHR -> True)
  where
    VkReleaseProfilingLockKHR = CString
_VkReleaseProfilingLockKHR

{-# INLINE _VkReleaseProfilingLockKHR #-}

_VkReleaseProfilingLockKHR :: CString
_VkReleaseProfilingLockKHR :: CString
_VkReleaseProfilingLockKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkReleaseProfilingLockKHR\NUL"#

{-# INLINE is_VkReleaseProfilingLockKHR #-}

is_VkReleaseProfilingLockKHR :: CString -> Bool
is_VkReleaseProfilingLockKHR :: CString -> Bool
is_VkReleaseProfilingLockKHR
  = (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
_VkReleaseProfilingLockKHR

type VkReleaseProfilingLockKHR = "vkReleaseProfilingLockKHR"

-- | > void vkReleaseProfilingLockKHR
--   >     ( VkDevice device
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR registry at www.khronos.org>
type HS_vkReleaseProfilingLockKHR = VkDevice -- ^ device
                                             -> IO ()

type PFN_vkReleaseProfilingLockKHR =
     FunPtr HS_vkReleaseProfilingLockKHR

foreign import ccall unsafe "dynamic"
               unwrapVkReleaseProfilingLockKHRUnsafe ::
               PFN_vkReleaseProfilingLockKHR -> HS_vkReleaseProfilingLockKHR

foreign import ccall safe "dynamic"
               unwrapVkReleaseProfilingLockKHRSafe ::
               PFN_vkReleaseProfilingLockKHR -> HS_vkReleaseProfilingLockKHR

instance VulkanProc "vkReleaseProfilingLockKHR" where
    type VkProcType "vkReleaseProfilingLockKHR" =
         HS_vkReleaseProfilingLockKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkReleaseProfilingLockKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkReleaseProfilingLockKHR")
-> VkProcType "vkReleaseProfilingLockKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkReleaseProfilingLockKHR")
-> VkProcType "vkReleaseProfilingLockKHR"
PFN_vkReleaseProfilingLockKHR -> HS_vkReleaseProfilingLockKHR
unwrapVkReleaseProfilingLockKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkReleaseProfilingLockKHR")
-> VkProcType "vkReleaseProfilingLockKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkReleaseProfilingLockKHR")
-> VkProcType "vkReleaseProfilingLockKHR"
PFN_vkReleaseProfilingLockKHR -> HS_vkReleaseProfilingLockKHR
unwrapVkReleaseProfilingLockKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

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

pattern $bVK_KHR_PERFORMANCE_QUERY_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_KHR_PERFORMANCE_QUERY_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1

type VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1

pattern VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: CString

pattern $bVK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: CString
$mVK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME <-
        (is_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME -> True)
  where
    VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME
      = CString
_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME

{-# INLINE _VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME #-}

_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: CString
_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: CString
_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_KHR_performance_query\NUL"#

{-# INLINE is_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME #-}

is_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_PERFORMANCE_QUERY_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_PERFORMANCE_QUERY_EXTENSION_NAME

type VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME =
     "VK_KHR_performance_query"

pattern VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR :: VkQueryType

pattern $bVK_QUERY_TYPE_PERFORMANCE_QUERY_KHR :: VkQueryType
$mVK_QUERY_TYPE_PERFORMANCE_QUERY_KHR :: forall {r}. VkQueryType -> (Void# -> r) -> (Void# -> r) -> r
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR =
        VkQueryType 1000116000

pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
        = VkStructureType 1000116000

pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
        = VkStructureType 1000116001

pattern VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR =
        VkStructureType 1000116002

pattern VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR =
        VkStructureType 1000116003

pattern VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR =
        VkStructureType 1000116004

pattern VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR =
        VkStructureType 1000116005

pattern VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR =
        VkStructureType 1000116006