{-# LINE 1 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Device
       (VkDeviceCreateInfo, VkDeviceEventInfoEXT,
        VkDeviceGeneratedCommandsFeaturesNVX,
        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfo,
        VkDeviceGroupBindSparseInfoKHR,
        VkDeviceGroupCommandBufferBeginInfo,
        VkDeviceGroupCommandBufferBeginInfoKHR,
        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
        VkDeviceGroupRenderPassBeginInfo,
        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
        VkDeviceGroupSubmitInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
        VkDeviceQueueInfo2)
       where
import Graphics.Vulkan.Constants                           (VK_MAX_DEVICE_GROUP_SIZE)
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.BaseTypes                     (VkBool32)
import Graphics.Vulkan.Types.Bitmasks                      (VkDeviceCreateFlags)
import Graphics.Vulkan.Types.Enum.Device                   (VkDeviceEventTypeEXT,
                                                            VkDeviceGroupPresentModeFlagBitsKHR,
                                                            VkDeviceGroupPresentModeFlagsKHR,
                                                            VkDeviceQueueCreateFlags)
import Graphics.Vulkan.Types.Enum.Queue                    (VkQueueGlobalPriorityEXT)
import Graphics.Vulkan.Types.Enum.StructureType            (VkStructureType)
import Graphics.Vulkan.Types.Handles                       (VkPhysicalDevice)
import Graphics.Vulkan.Types.Struct.Bind                   (VkBindSparseInfo)
import Graphics.Vulkan.Types.Struct.Command                (VkCommandBufferBeginInfo)
import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
import Graphics.Vulkan.Types.Struct.Present                (VkPresentInfoKHR)
import Graphics.Vulkan.Types.Struct.Rect                   (VkRect2D)
import Graphics.Vulkan.Types.Struct.RenderPass             (VkRenderPassBeginInfo)
import Graphics.Vulkan.Types.Struct.SubmitInfo             (VkSubmitInfo)
import Graphics.Vulkan.Types.Struct.SwapchainC             (VkSwapchainCreateInfoKHR)

-- | > typedef struct VkDeviceCreateInfo {
--   >     VkStructureType sType;
--   >     const void*     pNext;
--   >     VkDeviceCreateFlags    flags;
--   >     uint32_t        queueCreateInfoCount;
--   >     const VkDeviceQueueCreateInfo* pQueueCreateInfos;
--   >     uint32_t               enabledLayerCount;
--   >     const char* const*      ppEnabledLayerNames;
--   >     uint32_t               enabledExtensionCount;
--   >     const char* const*      ppEnabledExtensionNames;
--   >     const VkPhysicalDeviceFeatures* pEnabledFeatures;
--   > } VkDeviceCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceCreateInfo VkDeviceCreateInfo registry at www.khronos.org>
type VkDeviceCreateInfo = VkStruct VkDeviceCreateInfo' -- ' closing tick for hsc2hs

data VkDeviceCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceCreateInfo where
    type StructRep VkDeviceCreateInfo =
         'StructMeta "VkDeviceCreateInfo" VkDeviceCreateInfo  -- ' closing tick for hsc2hs
                                                             (72)
{-# LINE 66 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 67 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 69 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 74 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkDeviceCreateFlags 'True
                                                           (16)
{-# LINE 79 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueCreateInfoCount" Word32 'False
                                                              (20)
{-# LINE 84 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pQueueCreateInfos" (Ptr VkDeviceQueueCreateInfo) -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (24)
{-# LINE 90 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "enabledLayerCount" Word32 'True
                                                          (32)
{-# LINE 95 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "ppEnabledLayerNames" (Ptr CString) 'False
                                                                    (40)
{-# LINE 100 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "enabledExtensionCount" Word32 'True
                                                              (48)
{-# LINE 105 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "ppEnabledExtensionNames" (Ptr CString) 'False
                (56)
{-# LINE 110 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pEnabledFeatures" (Ptr VkPhysicalDeviceFeatures) 'True
                (64)
{-# LINE 115 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceEventInfoEXT {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkDeviceEventTypeEXT             deviceEvent;
--   > } VkDeviceEventInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceEventInfoEXT VkDeviceEventInfoEXT registry at www.khronos.org>
type VkDeviceEventInfoEXT = VkStruct VkDeviceEventInfoEXT' -- ' closing tick for hsc2hs

data VkDeviceEventInfoEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceEventInfoEXT where
    type StructRep VkDeviceEventInfoEXT =
         'StructMeta "VkDeviceEventInfoEXT" VkDeviceEventInfoEXT  -- ' closing tick for hsc2hs
                                                                 (24)
{-# LINE 137 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 138 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 140 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 145 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "deviceEvent" VkDeviceEventTypeEXT 'False
                                                                   (16)
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkBool32                         computeBindingPointSupport;
--   > } VkDeviceGeneratedCommandsFeaturesNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGeneratedCommandsFeaturesNVX VkDeviceGeneratedCommandsFeaturesNVX registry at www.khronos.org>
type VkDeviceGeneratedCommandsFeaturesNVX =
     VkStruct VkDeviceGeneratedCommandsFeaturesNVX' -- ' closing tick for hsc2hs

data VkDeviceGeneratedCommandsFeaturesNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGeneratedCommandsFeaturesNVX where
    type StructRep VkDeviceGeneratedCommandsFeaturesNVX =
         'StructMeta "VkDeviceGeneratedCommandsFeaturesNVX" -- ' closing tick for hsc2hs
           VkDeviceGeneratedCommandsFeaturesNVX
           (24)
{-# LINE 174 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 175 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 177 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 182 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "computeBindingPointSupport" VkBool32 'False
                                                                      (16)
{-# LINE 187 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceGeneratedCommandsLimitsNVX {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                         maxIndirectCommandsLayoutTokenCount;
--   >     uint32_t                         maxObjectEntryCounts;
--   >     uint32_t                         minSequenceCountBufferOffsetAlignment;
--   >     uint32_t                         minSequenceIndexBufferOffsetAlignment;
--   >     uint32_t                         minCommandsTokenBufferOffsetAlignment;
--   > } VkDeviceGeneratedCommandsLimitsNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGeneratedCommandsLimitsNVX VkDeviceGeneratedCommandsLimitsNVX registry at www.khronos.org>
type VkDeviceGeneratedCommandsLimitsNVX =
     VkStruct VkDeviceGeneratedCommandsLimitsNVX' -- ' closing tick for hsc2hs

data VkDeviceGeneratedCommandsLimitsNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGeneratedCommandsLimitsNVX where
    type StructRep VkDeviceGeneratedCommandsLimitsNVX =
         'StructMeta "VkDeviceGeneratedCommandsLimitsNVX" -- ' closing tick for hsc2hs
           VkDeviceGeneratedCommandsLimitsNVX
           (40)
{-# LINE 215 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 216 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 218 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 223 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxIndirectCommandsLayoutTokenCount" Word32 'False
                (16)
{-# LINE 228 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxObjectEntryCounts" Word32 'False
                                                              (20)
{-# LINE 233 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minSequenceCountBufferOffsetAlignment" Word32 'False
                (24)
{-# LINE 238 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minSequenceIndexBufferOffsetAlignment" Word32 'False
                (28)
{-# LINE 243 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minCommandsTokenBufferOffsetAlignment" Word32 'False
                (32)
{-# LINE 248 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceGroupBindSparseInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                         resourceDeviceIndex;
--   >     uint32_t                         memoryDeviceIndex;
--   > } VkDeviceGroupBindSparseInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfo registry at www.khronos.org>
type VkDeviceGroupBindSparseInfo =
     VkStruct VkDeviceGroupBindSparseInfo' -- ' closing tick for hsc2hs

data VkDeviceGroupBindSparseInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupBindSparseInfo where
    type StructRep VkDeviceGroupBindSparseInfo =
         'StructMeta "VkDeviceGroupBindSparseInfo" -- ' closing tick for hsc2hs
           VkDeviceGroupBindSparseInfo
           (24)
{-# LINE 273 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 274 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 276 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 281 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "resourceDeviceIndex" Word32 'False
                                                             (16)
{-# LINE 286 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memoryDeviceIndex" Word32 'False
                                                           (20)
{-# LINE 291 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkBindSparseInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkDeviceGroupBindSparseInfo`
type VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo

-- | > typedef struct VkDeviceGroupCommandBufferBeginInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                         deviceMask;
--   > } VkDeviceGroupCommandBufferBeginInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfo registry at www.khronos.org>
type VkDeviceGroupCommandBufferBeginInfo =
     VkStruct VkDeviceGroupCommandBufferBeginInfo' -- ' closing tick for hsc2hs

data VkDeviceGroupCommandBufferBeginInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupCommandBufferBeginInfo where
    type StructRep VkDeviceGroupCommandBufferBeginInfo =
         'StructMeta "VkDeviceGroupCommandBufferBeginInfo" -- ' closing tick for hsc2hs
           VkDeviceGroupCommandBufferBeginInfo
           (24)
{-# LINE 318 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 319 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 321 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 326 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "deviceMask" Word32 'False
                                                    (16)
{-# LINE 331 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkCommandBufferBeginInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkDeviceGroupCommandBufferBeginInfo`
type VkDeviceGroupCommandBufferBeginInfoKHR =
     VkDeviceGroupCommandBufferBeginInfo

-- | > typedef struct VkDeviceGroupDeviceCreateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                         physicalDeviceCount;
--   >     const VkPhysicalDevice*  pPhysicalDevices;
--   > } VkDeviceGroupDeviceCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfo registry at www.khronos.org>
type VkDeviceGroupDeviceCreateInfo =
     VkStruct VkDeviceGroupDeviceCreateInfo' -- ' closing tick for hsc2hs

data VkDeviceGroupDeviceCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupDeviceCreateInfo where
    type StructRep VkDeviceGroupDeviceCreateInfo =
         'StructMeta "VkDeviceGroupDeviceCreateInfo" -- ' closing tick for hsc2hs
           VkDeviceGroupDeviceCreateInfo
           (32)
{-# LINE 360 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 361 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 363 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 368 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "physicalDeviceCount" Word32 'True
                                                            (16)
{-# LINE 373 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pPhysicalDevices" (Ptr VkPhysicalDevice) 'False
                (24)
{-# LINE 378 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkDeviceGroupDeviceCreateInfo`
type VkDeviceGroupDeviceCreateInfoKHR =
     VkDeviceGroupDeviceCreateInfo

-- | > typedef struct VkDeviceGroupPresentCapabilitiesKHR {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                         presentMask[VK_MAX_DEVICE_GROUP_SIZE];
--   >     VkDeviceGroupPresentModeFlagsKHR modes;
--   > } VkDeviceGroupPresentCapabilitiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupPresentCapabilitiesKHR VkDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
type VkDeviceGroupPresentCapabilitiesKHR =
     VkStruct VkDeviceGroupPresentCapabilitiesKHR' -- ' closing tick for hsc2hs

data VkDeviceGroupPresentCapabilitiesKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupPresentCapabilitiesKHR where
    type StructRep VkDeviceGroupPresentCapabilitiesKHR =
         'StructMeta "VkDeviceGroupPresentCapabilitiesKHR" -- ' closing tick for hsc2hs
           VkDeviceGroupPresentCapabilitiesKHR
           (152)
{-# LINE 407 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 408 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 410 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 415 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "presentMask" Word32 'False
                                                     (16)
{-# LINE 420 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                VK_MAX_DEVICE_GROUP_SIZE
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "modes" VkDeviceGroupPresentModeFlagsKHR 'False
                (144)
{-# LINE 425 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceGroupPresentInfoKHR {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t         swapchainCount;
--   >     const uint32_t* pDeviceMasks;
--   >     VkDeviceGroupPresentModeFlagBitsKHR mode;
--   > } VkDeviceGroupPresentInfoKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHR VkDeviceGroupPresentInfoKHR registry at www.khronos.org>
type VkDeviceGroupPresentInfoKHR =
     VkStruct VkDeviceGroupPresentInfoKHR' -- ' closing tick for hsc2hs

data VkDeviceGroupPresentInfoKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupPresentInfoKHR where
    type StructRep VkDeviceGroupPresentInfoKHR =
         'StructMeta "VkDeviceGroupPresentInfoKHR" -- ' closing tick for hsc2hs
           VkDeviceGroupPresentInfoKHR
           (40)
{-# LINE 451 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 452 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 454 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 459 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "swapchainCount" Word32 'True
                                                       (16)
{-# LINE 464 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pDeviceMasks" (Ptr Word32) 'False
                                                            (24)
{-# LINE 469 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "mode" VkDeviceGroupPresentModeFlagBitsKHR 'False
                (32)
{-# LINE 474 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkPresentInfoKHR] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceGroupRenderPassBeginInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                         deviceMask;
--   >     uint32_t         deviceRenderAreaCount;
--   >     const VkRect2D*  pDeviceRenderAreas;
--   > } VkDeviceGroupRenderPassBeginInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfo registry at www.khronos.org>
type VkDeviceGroupRenderPassBeginInfo =
     VkStruct VkDeviceGroupRenderPassBeginInfo' -- ' closing tick for hsc2hs

data VkDeviceGroupRenderPassBeginInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupRenderPassBeginInfo where
    type StructRep VkDeviceGroupRenderPassBeginInfo =
         'StructMeta "VkDeviceGroupRenderPassBeginInfo" -- ' closing tick for hsc2hs
           VkDeviceGroupRenderPassBeginInfo
           (32)
{-# LINE 500 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 501 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 503 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 508 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "deviceMask" Word32 'False
                                                    (16)
{-# LINE 513 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "deviceRenderAreaCount" Word32 'True
                                                              (20)
{-# LINE 518 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pDeviceRenderAreas" (Ptr VkRect2D) 'False
                                                                    (24)
{-# LINE 523 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkDeviceGroupRenderPassBeginInfo`
type VkDeviceGroupRenderPassBeginInfoKHR =
     VkDeviceGroupRenderPassBeginInfo

-- | > typedef struct VkDeviceGroupSubmitInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t         waitSemaphoreCount;
--   >     const uint32_t*    pWaitSemaphoreDeviceIndices;
--   >     uint32_t         commandBufferCount;
--   >     const uint32_t*    pCommandBufferDeviceMasks;
--   >     uint32_t         signalSemaphoreCount;
--   >     const uint32_t*  pSignalSemaphoreDeviceIndices;
--   > } VkDeviceGroupSubmitInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfo registry at www.khronos.org>
type VkDeviceGroupSubmitInfo = VkStruct VkDeviceGroupSubmitInfo' -- ' closing tick for hsc2hs

data VkDeviceGroupSubmitInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupSubmitInfo where
    type StructRep VkDeviceGroupSubmitInfo =
         'StructMeta "VkDeviceGroupSubmitInfo" VkDeviceGroupSubmitInfo -- ' closing tick for hsc2hs
           (64)
{-# LINE 554 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 555 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 557 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 562 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "waitSemaphoreCount" Word32 'True
                                                           (16)
{-# LINE 567 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pWaitSemaphoreDeviceIndices" (Ptr Word32) 'False
                (24)
{-# LINE 572 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "commandBufferCount" Word32 'True
                                                           (32)
{-# LINE 577 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pCommandBufferDeviceMasks" (Ptr Word32) 'False
                (40)
{-# LINE 582 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "signalSemaphoreCount" Word32 'True
                                                             (48)
{-# LINE 587 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pSignalSemaphoreDeviceIndices" (Ptr Word32) 'False
                (56)
{-# LINE 592 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSubmitInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkDeviceGroupSubmitInfo`
type VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo

-- | > typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkDeviceGroupPresentModeFlagsKHR                         modes;
--   > } VkDeviceGroupSwapchainCreateInfoKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupSwapchainCreateInfoKHR VkDeviceGroupSwapchainCreateInfoKHR registry at www.khronos.org>
type VkDeviceGroupSwapchainCreateInfoKHR =
     VkStruct VkDeviceGroupSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs

data VkDeviceGroupSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceGroupSwapchainCreateInfoKHR where
    type StructRep VkDeviceGroupSwapchainCreateInfoKHR =
         'StructMeta "VkDeviceGroupSwapchainCreateInfoKHR" -- ' closing tick for hsc2hs
           VkDeviceGroupSwapchainCreateInfoKHR
           (24)
{-# LINE 619 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 620 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 622 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 627 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "modes" VkDeviceGroupPresentModeFlagsKHR 'False
                (16)
{-# LINE 632 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceQueueCreateInfo {
--   >     VkStructureType sType;
--   >     const void*     pNext;
--   >     VkDeviceQueueCreateFlags    flags;
--   >     uint32_t        queueFamilyIndex;
--   >     uint32_t        queueCount;
--   >     const float*    pQueuePriorities;
--   > } VkDeviceQueueCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueCreateInfo VkDeviceQueueCreateInfo registry at www.khronos.org>
type VkDeviceQueueCreateInfo = VkStruct VkDeviceQueueCreateInfo' -- ' closing tick for hsc2hs

data VkDeviceQueueCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceQueueCreateInfo where
    type StructRep VkDeviceQueueCreateInfo =
         'StructMeta "VkDeviceQueueCreateInfo" VkDeviceQueueCreateInfo -- ' closing tick for hsc2hs
           (40)
{-# LINE 657 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 658 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 660 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 665 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkDeviceQueueCreateFlags 'True
                                                                (16)
{-# LINE 670 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueFamilyIndex" Word32 'False
                                                          (20)
{-# LINE 675 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueCount" Word32 'False
                                                    (24)
{-# LINE 680 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pQueuePriorities" (Ptr  -- ' closing tick for hsc2hs
                                                 Float)
{-# LINE 685 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                'False -- ' closing tick for hsc2hs
                (32)
{-# LINE 687 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*                    pNext;
--   >     VkQueueGlobalPriorityEXT       globalPriority;
--   > } VkDeviceQueueGlobalPriorityCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueGlobalPriorityCreateInfoEXT VkDeviceQueueGlobalPriorityCreateInfoEXT registry at www.khronos.org>
type VkDeviceQueueGlobalPriorityCreateInfoEXT =
     VkStruct VkDeviceQueueGlobalPriorityCreateInfoEXT' -- ' closing tick for hsc2hs

data VkDeviceQueueGlobalPriorityCreateInfoEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
    type StructRep VkDeviceQueueGlobalPriorityCreateInfoEXT =
         'StructMeta "VkDeviceQueueGlobalPriorityCreateInfoEXT" -- ' closing tick for hsc2hs
           VkDeviceQueueGlobalPriorityCreateInfoEXT
           (24)
{-# LINE 712 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 713 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 715 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 720 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "globalPriority" VkQueueGlobalPriorityEXT 'False
                (16)
{-# LINE 725 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkDeviceQueueCreateInfo] -- ' closing tick for hsc2hs

-- | > typedef struct VkDeviceQueueInfo2 {
--   >     VkStructureType sType;
--   >     const void*                         pNext;
--   >     VkDeviceQueueCreateFlags            flags;
--   >     uint32_t                            queueFamilyIndex;
--   >     uint32_t                            queueIndex;
--   > } VkDeviceQueueInfo2;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueInfo2 VkDeviceQueueInfo2 registry at www.khronos.org>
type VkDeviceQueueInfo2 = VkStruct VkDeviceQueueInfo2' -- ' closing tick for hsc2hs

data VkDeviceQueueInfo2' -- ' closing tick for hsc2hs

instance VulkanMarshal VkDeviceQueueInfo2 where
    type StructRep VkDeviceQueueInfo2 =
         'StructMeta "VkDeviceQueueInfo2" VkDeviceQueueInfo2  -- ' closing tick for hsc2hs
                                                             (32)
{-# LINE 749 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           8
{-# LINE 750 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 752 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 757 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkDeviceQueueCreateFlags 'False
                                                                 (16)
{-# LINE 762 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueFamilyIndex" Word32 'False
                                                          (20)
{-# LINE 767 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueIndex" Word32 'False
                                                    (24)
{-# LINE 772 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs