{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
{-# OPTIONS_GHC -fno-warn-orphans#-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE CPP                      #-}
{-# LANGUAGE DataKinds                #-}
{-# LANGUAGE FlexibleInstances        #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash                #-}
{-# LANGUAGE PatternSynonyms          #-}
{-# LANGUAGE Strict                   #-}
{-# LANGUAGE TypeFamilies             #-}
{-# LANGUAGE ViewPatterns             #-}
module Graphics.Vulkan.Ext.VK_KHR_device_group
       (-- * Vulkan extension: @VK_KHR_device_group@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Jeff Bolz @jeffbolznv@
        --
        -- author: @KHR@
        --
        -- type: @device@
        --
        -- Extension number: @61@
        --
        -- Required extensions: 'VK_KHR_device_group_creation'.
        --

        -- ** Required extensions: 'VK_KHR_device_group_creation'.
        VkDeviceGroupBindSparseInfoKHR,
        VkDeviceGroupCommandBufferBeginInfoKHR,
        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfoKHR,
        VkMemoryAllocateBitmask(..), VkMemoryHeapBitmask(..),
        VkMemoryOverallocationBehaviorAMD(..), VkMemoryPropertyBitmask(..),
        VkMemoryAllocateFlagBits(), VkMemoryAllocateFlagBitsKHR(..),
        VkMemoryAllocateFlags(), VkMemoryHeapFlagBits(),
        VkMemoryHeapFlags(), VkMemoryPropertyFlagBits(),
        VkMemoryPropertyFlags(), VkMemoryAllocateFlagsInfoKHR,
        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(..), VkPeerMemoryFeatureBitmask(..),
        VkPeerMemoryFeatureFlagBits(), VkPeerMemoryFeatureFlagBitsKHR(..),
        VkPeerMemoryFeatureFlags(), VkGetDeviceGroupPeerMemoryFeaturesKHR,
        pattern VkGetDeviceGroupPeerMemoryFeaturesKHR,
        HS_vkGetDeviceGroupPeerMemoryFeaturesKHR,
        PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR, VkCmdSetDeviceMaskKHR,
        pattern VkCmdSetDeviceMaskKHR, HS_vkCmdSetDeviceMaskKHR,
        PFN_vkCmdSetDeviceMaskKHR, VkCmdDispatchBaseKHR,
        pattern VkCmdDispatchBaseKHR, HS_vkCmdDispatchBaseKHR,
        PFN_vkCmdDispatchBaseKHR, module Graphics.Vulkan.Marshal,
        AHardwareBuffer(), ANativeWindow(), CAMetalLayer(), VkBool32(..),
        VkDeviceAddress(..), VkDeviceSize(..), VkFlags(..),
        VkSampleMask(..), 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(),
        VK_KHR_DEVICE_GROUP_SPEC_VERSION,
        pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION,
        VK_KHR_DEVICE_GROUP_EXTENSION_NAME,
        pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR,
        pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR,
        pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR,
        pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR,
        pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR,
        pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,
        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR,
        pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHR,
        pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR,
        -- ** Required extensions: 'VK_KHR_bind_memory2', 'VK_KHR_device_group_creation'.
        VkBindBufferMemoryDeviceGroupInfoKHR,
        VkBindImageMemoryDeviceGroupInfoKHR,
        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR,
        pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
        -- ** Required extensions: 'VK_KHR_surface', 'VK_KHR_device_group_creation'.
        VkDeviceGroupPresentCapabilitiesKHR,
        VkDeviceDiagnosticsConfigBitmaskNV(..), VkDeviceEventTypeEXT(..),
        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
        VkDeviceDiagnosticsConfigFlagBitsNV(),
        VkDeviceDiagnosticsConfigFlagsNV(),
        VkDeviceGroupPresentModeFlagBitsKHR(),
        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
        VkStructureType(..),
        -- > #include "vk_platform.h"
        pattern VkGetDeviceGroupPresentCapabilitiesKHR,
        HS_vkGetDeviceGroupPresentCapabilitiesKHR,
        PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
        pattern VkGetDeviceGroupSurfacePresentModesKHR,
        HS_vkGetDeviceGroupSurfacePresentModesKHR,
        PFN_vkGetDeviceGroupSurfacePresentModesKHR,
        pattern VkGetPhysicalDevicePresentRectanglesKHR,
        HS_vkGetPhysicalDevicePresentRectanglesKHR,
        PFN_vkGetPhysicalDevicePresentRectanglesKHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
        -- ** Required extensions: 'VK_KHR_swapchain', 'VK_KHR_device_group_creation'.
        VkAcquireNextImageInfoKHR, VkBindImageMemoryInfo,
        VkBindImageMemorySwapchainInfoKHR,
        pattern VK_COLORSPACE_SRGB_NONLINEAR_KHR,
        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
        VkColorComponentFlagBits(), VkColorComponentFlags(),
        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
        VkCompositeAlphaFlagsKHR(), VkDeviceGroupPresentInfoKHR,
        VkDeviceGroupSwapchainCreateInfoKHR, VkExtent2D, VkExtent3D,
        VkFormat(..), VkFormatFeatureBitmask(..),
        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
        VkImageUsageBitmask(..), VkImageViewType(..),
        VkImageAspectFlagBits(), VkImageAspectFlags(),
        VkImageCreateFlagBits(), VkImageCreateFlags(),
        VkImageUsageFlagBits(), VkImageUsageFlags(),
        VkImageViewCreateBitmask(..), VkImageViewCreateFlagBits(),
        VkImageViewCreateFlags(), VkImageCreateInfo,
        VkImageSwapchainCreateInfoKHR, VkPresentInfoKHR,
        VkPresentModeKHR(..), VkResult(..), VkSampleCountBitmask(..),
        VkSampleCountFlagBits(), VkSampleCountFlags(), VkSharingMode(..),
        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
        VkSwapchainImageUsageBitmaskANDROID(..),
        VkSwapchainCreateBitmaskKHR(..), VkSwapchainCreateFlagBitsKHR(),
        VkSwapchainCreateFlagsKHR(),
        VkSwapchainImageUsageFlagBitsANDROID(),
        VkSwapchainImageUsageFlagsANDROID(), VkSwapchainCreateInfoKHR,
        -- > #include "vk_platform.h"
        pattern VkAcquireNextImage2KHR, HS_vkAcquireNextImage2KHR,
        PFN_vkAcquireNextImage2KHR,
        pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
        pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR)
       where
import GHC.Ptr                                           (Ptr (..))
import Graphics.Vulkan.Core_1_1                          (pattern VK_DEPENDENCY_DEVICE_GROUP_BIT,
                                                          pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
                                                          pattern VK_PIPELINE_CREATE_DISPATCH_BASE,
                                                          pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
                                                          pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
                                                          pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
                                                          pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO)
import Graphics.Vulkan.Ext.VK_KHR_swapchain              (HS_vkAcquireNextImage2KHR,
                                                          HS_vkGetDeviceGroupPresentCapabilitiesKHR,
                                                          HS_vkGetDeviceGroupSurfacePresentModesKHR,
                                                          HS_vkGetPhysicalDevicePresentRectanglesKHR,
                                                          PFN_vkAcquireNextImage2KHR,
                                                          PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
                                                          PFN_vkGetDeviceGroupSurfacePresentModesKHR,
                                                          PFN_vkGetPhysicalDevicePresentRectanglesKHR,
                                                          pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
                                                          pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
                                                          pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
                                                          pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
                                                          pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
                                                          pattern VkAcquireNextImage2KHR,
                                                          pattern VkGetDeviceGroupPresentCapabilitiesKHR,
                                                          pattern VkGetDeviceGroupSurfacePresentModesKHR,
                                                          pattern VkGetPhysicalDevicePresentRectanglesKHR)
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.Color
import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR
import Graphics.Vulkan.Types.Enum.Device
import Graphics.Vulkan.Types.Enum.Format
import Graphics.Vulkan.Types.Enum.Image
import Graphics.Vulkan.Types.Enum.Memory
import Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag
import Graphics.Vulkan.Types.Enum.PresentModeKHR
import Graphics.Vulkan.Types.Enum.Result
import Graphics.Vulkan.Types.Enum.SampleCountFlags
import Graphics.Vulkan.Types.Enum.SharingMode
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Enum.Surface
import Graphics.Vulkan.Types.Enum.Swapchain
import Graphics.Vulkan.Types.Handles
import Graphics.Vulkan.Types.Struct.Acquire              (VkAcquireNextImageInfoKHR)
import Graphics.Vulkan.Types.Struct.Bind                 (VkBindBufferMemoryDeviceGroupInfoKHR,
                                                          VkBindImageMemoryDeviceGroupInfoKHR,
                                                          VkBindImageMemoryInfo,
                                                          VkBindImageMemorySwapchainInfoKHR)
import Graphics.Vulkan.Types.Struct.Device               (VkDeviceGroupBindSparseInfoKHR,
                                                          VkDeviceGroupCommandBufferBeginInfoKHR,
                                                          VkDeviceGroupPresentCapabilitiesKHR,
                                                          VkDeviceGroupPresentInfoKHR,
                                                          VkDeviceGroupRenderPassBeginInfoKHR,
                                                          VkDeviceGroupSubmitInfoKHR,
                                                          VkDeviceGroupSwapchainCreateInfoKHR)
import Graphics.Vulkan.Types.Struct.Extent               (VkExtent2D,
                                                          VkExtent3D)
import Graphics.Vulkan.Types.Struct.Image                (VkImageCreateInfo, VkImageSwapchainCreateInfoKHR)
import Graphics.Vulkan.Types.Struct.Memory               (VkMemoryAllocateFlagsInfoKHR)
import Graphics.Vulkan.Types.Struct.Present              (VkPresentInfoKHR)
import Graphics.Vulkan.Types.Struct.Swapchain            (VkSwapchainCreateInfoKHR)

pattern VkGetDeviceGroupPeerMemoryFeaturesKHR :: CString

pattern $bVkGetDeviceGroupPeerMemoryFeaturesKHR :: CString
$mVkGetDeviceGroupPeerMemoryFeaturesKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetDeviceGroupPeerMemoryFeaturesKHR <-
        (is_VkGetDeviceGroupPeerMemoryFeaturesKHR -> True)
  where
    VkGetDeviceGroupPeerMemoryFeaturesKHR
      = CString
_VkGetDeviceGroupPeerMemoryFeaturesKHR

{-# INLINE _VkGetDeviceGroupPeerMemoryFeaturesKHR #-}

_VkGetDeviceGroupPeerMemoryFeaturesKHR :: CString
_VkGetDeviceGroupPeerMemoryFeaturesKHR :: CString
_VkGetDeviceGroupPeerMemoryFeaturesKHR
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetDeviceGroupPeerMemoryFeaturesKHR\NUL"#

{-# INLINE is_VkGetDeviceGroupPeerMemoryFeaturesKHR #-}

is_VkGetDeviceGroupPeerMemoryFeaturesKHR :: CString -> Bool
is_VkGetDeviceGroupPeerMemoryFeaturesKHR :: CString -> Bool
is_VkGetDeviceGroupPeerMemoryFeaturesKHR
  = (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
_VkGetDeviceGroupPeerMemoryFeaturesKHR

type VkGetDeviceGroupPeerMemoryFeaturesKHR =
     "vkGetDeviceGroupPeerMemoryFeaturesKHR"

-- | This is an alias for `vkGetDeviceGroupPeerMemoryFeatures`.
--
--   > void vkGetDeviceGroupPeerMemoryFeaturesKHR
--   >     ( VkDevice device
--   >     , uint32_t heapIndex
--   >     , uint32_t localDeviceIndex
--   >     , uint32_t remoteDeviceIndex
--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR registry at www.khronos.org>
type HS_vkGetDeviceGroupPeerMemoryFeaturesKHR =
     VkDevice -- ^ device
              ->
       Word32 -- ^ heapIndex
              -> Word32 -- ^ localDeviceIndex
                        -> Word32 -- ^ remoteDeviceIndex
                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
                                                                  -> IO ()

type PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR =
     FunPtr HS_vkGetDeviceGroupPeerMemoryFeaturesKHR

foreign import ccall unsafe "dynamic"
               unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRUnsafe ::
               PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ->
                 HS_vkGetDeviceGroupPeerMemoryFeaturesKHR

foreign import ccall safe "dynamic"
               unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe ::
               PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ->
                 HS_vkGetDeviceGroupPeerMemoryFeaturesKHR

instance VulkanProc "vkGetDeviceGroupPeerMemoryFeaturesKHR" where
    type VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR" =
         HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetDeviceGroupPeerMemoryFeaturesKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR")
-> VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR")
-> VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR"
PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR
-> HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR")
-> VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR"
unwrapVkProcPtrSafe
      = FunPtr (VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR")
-> VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR"
PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR
-> HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCmdSetDeviceMaskKHR :: CString

pattern $bVkCmdSetDeviceMaskKHR :: CString
$mVkCmdSetDeviceMaskKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCmdSetDeviceMaskKHR <- (is_VkCmdSetDeviceMaskKHR -> True)
  where
    VkCmdSetDeviceMaskKHR = CString
_VkCmdSetDeviceMaskKHR

{-# INLINE _VkCmdSetDeviceMaskKHR #-}

_VkCmdSetDeviceMaskKHR :: CString
_VkCmdSetDeviceMaskKHR :: CString
_VkCmdSetDeviceMaskKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCmdSetDeviceMaskKHR\NUL"#

{-# INLINE is_VkCmdSetDeviceMaskKHR #-}

is_VkCmdSetDeviceMaskKHR :: CString -> Bool
is_VkCmdSetDeviceMaskKHR :: CString -> Bool
is_VkCmdSetDeviceMaskKHR
  = (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
_VkCmdSetDeviceMaskKHR

type VkCmdSetDeviceMaskKHR = "vkCmdSetDeviceMaskKHR"

-- | This is an alias for `vkCmdSetDeviceMask`.
--
--   Queues: 'graphics', 'compute', 'transfer'.
--
--   Renderpass: @both@
--
--   > void vkCmdSetDeviceMaskKHR
--   >     ( VkCommandBuffer commandBuffer
--   >     , uint32_t deviceMask
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR registry at www.khronos.org>
type HS_vkCmdSetDeviceMaskKHR = VkCommandBuffer -- ^ commandBuffer
                                                -> Word32 -- ^ deviceMask
                                                          -> IO ()

type PFN_vkCmdSetDeviceMaskKHR = FunPtr HS_vkCmdSetDeviceMaskKHR

foreign import ccall unsafe "dynamic"
               unwrapVkCmdSetDeviceMaskKHRUnsafe ::
               PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR

foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskKHRSafe
               :: PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR

instance VulkanProc "vkCmdSetDeviceMaskKHR" where
    type VkProcType "vkCmdSetDeviceMaskKHR" = HS_vkCmdSetDeviceMaskKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCmdSetDeviceMaskKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCmdSetDeviceMaskKHR")
-> VkProcType "vkCmdSetDeviceMaskKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCmdSetDeviceMaskKHR")
-> VkProcType "vkCmdSetDeviceMaskKHR"
PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
unwrapVkCmdSetDeviceMaskKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCmdSetDeviceMaskKHR")
-> VkProcType "vkCmdSetDeviceMaskKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCmdSetDeviceMaskKHR")
-> VkProcType "vkCmdSetDeviceMaskKHR"
PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
unwrapVkCmdSetDeviceMaskKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCmdDispatchBaseKHR :: CString

pattern $bVkCmdDispatchBaseKHR :: CString
$mVkCmdDispatchBaseKHR :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCmdDispatchBaseKHR <- (is_VkCmdDispatchBaseKHR -> True)
  where
    VkCmdDispatchBaseKHR = CString
_VkCmdDispatchBaseKHR

{-# INLINE _VkCmdDispatchBaseKHR #-}

_VkCmdDispatchBaseKHR :: CString
_VkCmdDispatchBaseKHR :: CString
_VkCmdDispatchBaseKHR = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCmdDispatchBaseKHR\NUL"#

{-# INLINE is_VkCmdDispatchBaseKHR #-}

is_VkCmdDispatchBaseKHR :: CString -> Bool
is_VkCmdDispatchBaseKHR :: CString -> Bool
is_VkCmdDispatchBaseKHR
  = (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
_VkCmdDispatchBaseKHR

type VkCmdDispatchBaseKHR = "vkCmdDispatchBaseKHR"

-- | This is an alias for `vkCmdDispatchBase`.
--
--   Queues: 'compute'.
--
--   Renderpass: @outside@
--
--   > void vkCmdDispatchBaseKHR
--   >     ( VkCommandBuffer commandBuffer
--   >     , uint32_t baseGroupX
--   >     , uint32_t baseGroupY
--   >     , uint32_t baseGroupZ
--   >     , uint32_t groupCountX
--   >     , uint32_t groupCountY
--   >     , uint32_t groupCountZ
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR registry at www.khronos.org>
type HS_vkCmdDispatchBaseKHR =
     VkCommandBuffer -- ^ commandBuffer
                     ->
       Word32 -- ^ baseGroupX
              -> Word32 -- ^ baseGroupY
                        -> Word32 -- ^ baseGroupZ
                                  -> Word32 -- ^ groupCountX
                                            -> Word32 -- ^ groupCountY
                                                      -> Word32 -- ^ groupCountZ
                                                                -> IO ()

type PFN_vkCmdDispatchBaseKHR = FunPtr HS_vkCmdDispatchBaseKHR

foreign import ccall unsafe "dynamic"
               unwrapVkCmdDispatchBaseKHRUnsafe ::
               PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR

foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseKHRSafe
               :: PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR

instance VulkanProc "vkCmdDispatchBaseKHR" where
    type VkProcType "vkCmdDispatchBaseKHR" = HS_vkCmdDispatchBaseKHR
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCmdDispatchBaseKHR

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCmdDispatchBaseKHR")
-> VkProcType "vkCmdDispatchBaseKHR"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCmdDispatchBaseKHR")
-> VkProcType "vkCmdDispatchBaseKHR"
PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR
unwrapVkCmdDispatchBaseKHRUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCmdDispatchBaseKHR")
-> VkProcType "vkCmdDispatchBaseKHR"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCmdDispatchBaseKHR")
-> VkProcType "vkCmdDispatchBaseKHR"
PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR
unwrapVkCmdDispatchBaseKHRSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

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

pattern $bVK_KHR_DEVICE_GROUP_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_KHR_DEVICE_GROUP_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4

type VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4

pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString

pattern $bVK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString
$mVK_KHR_DEVICE_GROUP_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_KHR_DEVICE_GROUP_EXTENSION_NAME <-
        (is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME -> True)
  where
    VK_KHR_DEVICE_GROUP_EXTENSION_NAME
      = CString
_VK_KHR_DEVICE_GROUP_EXTENSION_NAME

{-# INLINE _VK_KHR_DEVICE_GROUP_EXTENSION_NAME #-}

_VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString
_VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString
_VK_KHR_DEVICE_GROUP_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_KHR_device_group\NUL"#

{-# INLINE is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME #-}

is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString -> Bool
is_VK_KHR_DEVICE_GROUP_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_DEVICE_GROUP_EXTENSION_NAME

type VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group"

pattern $bVK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR =
        VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR =
        VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR
        = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR =
        VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO

pattern $bVK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR =
        VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO

pattern $bVK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR :: forall {a :: FlagType}. VkPeerMemoryFeatureBitmask a
$mVK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR :: forall {r} {a :: FlagType}.
VkPeerMemoryFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR =
        VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT

pattern $bVK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR :: forall {a :: FlagType}. VkPeerMemoryFeatureBitmask a
$mVK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR :: forall {r} {a :: FlagType}.
VkPeerMemoryFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR =
        VK_PEER_MEMORY_FEATURE_COPY_DST_BIT

pattern $bVK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR :: forall {a :: FlagType}. VkPeerMemoryFeatureBitmask a
$mVK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR :: forall {r} {a :: FlagType}.
VkPeerMemoryFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR =
        VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT

pattern $bVK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR :: forall {a :: FlagType}. VkPeerMemoryFeatureBitmask a
$mVK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR :: forall {r} {a :: FlagType}.
VkPeerMemoryFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR =
        VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT

pattern $bVK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR :: forall {a :: FlagType}. VkMemoryAllocateBitmask a
$mVK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR :: forall {r} {a :: FlagType}.
VkMemoryAllocateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR =
        VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT

pattern $bVK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: forall {a :: FlagType}. VkPipelineCreateBitmask a
$mVK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: forall {r} {a :: FlagType}.
VkPipelineCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR =
        VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT

pattern $bVK_PIPELINE_CREATE_DISPATCH_BASE_KHR :: forall {a :: FlagType}. VkPipelineCreateBitmask a
$mVK_PIPELINE_CREATE_DISPATCH_BASE_KHR :: forall {r} {a :: FlagType}.
VkPipelineCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_CREATE_DISPATCH_BASE_KHR =
        VK_PIPELINE_CREATE_DISPATCH_BASE

pattern $bVK_DEPENDENCY_DEVICE_GROUP_BIT_KHR :: forall {a :: FlagType}. VkDependencyBitmask a
$mVK_DEPENDENCY_DEVICE_GROUP_BIT_KHR :: forall {r} {a :: FlagType}.
VkDependencyBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR =
        VK_DEPENDENCY_DEVICE_GROUP_BIT

pattern $bVK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR
        = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO

pattern $bVK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR :: VkStructureType
$mVK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR =
        VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO

pattern $bVK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: forall {a :: FlagType}. VkImageCreateBitmask a
$mVK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: forall {r} {a :: FlagType}.
VkImageCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR =
        VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT