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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms       #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
{-# LANGUAGE UndecidableInstances  #-}
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           Foreign.Storable                                    (Storable (..))
import           GHC.Base                                            (Addr#,
                                                                      ByteArray#,
                                                                      Proxy#,
                                                                      byteArrayContents#,
                                                                      plusAddr#,
                                                                      proxy#)
import           GHC.TypeLits                                        (KnownNat,
                                                                      natVal') -- ' closing tick for hsc2hs
import           Graphics.Vulkan.Constants                           (VK_MAX_DEVICE_GROUP_SIZE,
                                                                      pattern 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)
import           System.IO.Unsafe                                    (unsafeDupablePerformIO)

-- | > 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>
data VkDeviceCreateInfo = VkDeviceCreateInfo# Addr# ByteArray#

instance Eq VkDeviceCreateInfo where
        (VkDeviceCreateInfo# a _) == x@(VkDeviceCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceCreateInfo where
        (VkDeviceCreateInfo# a _) `compare` x@(VkDeviceCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceCreateInfo where
        sizeOf ~_ = (72)
{-# LINE 95 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 98 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceCreateInfo where
        unsafeAddr (VkDeviceCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceCreateInfo# (plusAddr# (byteArrayContents# b) off) b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceCreateInfo where
        type StructFields VkDeviceCreateInfo =
             '["sType", "pNext", "flags", "queueCreateInfoCount", -- ' closing tick for hsc2hs
               "pQueueCreateInfos", "enabledLayerCount", "ppEnabledLayerNames",
               "enabledExtensionCount", "ppEnabledExtensionNames",
               "pEnabledFeatures"]
        type CUnionType VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "sType" VkDeviceCreateInfo
         where
        type FieldType "sType" VkDeviceCreateInfo = VkStructureType
        type FieldOptional "sType" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceCreateInfo =
             (0)
{-# LINE 135 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (0)
{-# LINE 142 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 149 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 153 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 159 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceCreateInfo
         where
        type FieldType "pNext" VkDeviceCreateInfo = Ptr Void
        type FieldOptional "pNext" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceCreateInfo =
             (8)
{-# LINE 166 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (8)
{-# LINE 173 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 180 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 184 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 190 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-} HasField "flags" VkDeviceCreateInfo
         where
        type FieldType "flags" VkDeviceCreateInfo = VkDeviceCreateFlags
        type FieldOptional "flags" VkDeviceCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkDeviceCreateInfo =
             (16)
{-# LINE 197 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "flags" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset = (16)
{-# LINE 204 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 211 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 215 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 221 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "queueCreateInfoCount" VkDeviceCreateInfo where
        type FieldType "queueCreateInfoCount" VkDeviceCreateInfo = Word32
        type FieldOptional "queueCreateInfoCount" VkDeviceCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "queueCreateInfoCount" VkDeviceCreateInfo =
             (20)
{-# LINE 229 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "queueCreateInfoCount" VkDeviceCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 238 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "queueCreateInfoCount" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 245 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 249 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "queueCreateInfoCount" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 255 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pQueueCreateInfos" VkDeviceCreateInfo where
        type FieldType "pQueueCreateInfos" VkDeviceCreateInfo =
             Ptr VkDeviceQueueCreateInfo
        type FieldOptional "pQueueCreateInfos" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pQueueCreateInfos" VkDeviceCreateInfo =
             (24)
{-# LINE 263 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pQueueCreateInfos" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 271 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pQueueCreateInfos" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 278 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 282 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pQueueCreateInfos" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 288 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "enabledLayerCount" VkDeviceCreateInfo where
        type FieldType "enabledLayerCount" VkDeviceCreateInfo = Word32
        type FieldOptional "enabledLayerCount" VkDeviceCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "enabledLayerCount" VkDeviceCreateInfo =
             (32)
{-# LINE 295 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "enabledLayerCount" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 303 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "enabledLayerCount" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 310 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 314 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "enabledLayerCount" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 320 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "ppEnabledLayerNames" VkDeviceCreateInfo where
        type FieldType "ppEnabledLayerNames" VkDeviceCreateInfo =
             Ptr CString
        type FieldOptional "ppEnabledLayerNames" VkDeviceCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "ppEnabledLayerNames" VkDeviceCreateInfo =
             (40)
{-# LINE 329 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "ppEnabledLayerNames" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 337 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "ppEnabledLayerNames" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 344 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 348 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "ppEnabledLayerNames" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 354 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "enabledExtensionCount" VkDeviceCreateInfo where
        type FieldType "enabledExtensionCount" VkDeviceCreateInfo = Word32
        type FieldOptional "enabledExtensionCount" VkDeviceCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "enabledExtensionCount" VkDeviceCreateInfo =
             (48)
{-# LINE 362 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "enabledExtensionCount" VkDeviceCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (48)
{-# LINE 371 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "enabledExtensionCount" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 378 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (48)
{-# LINE 382 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "enabledExtensionCount" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 388 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "ppEnabledExtensionNames" VkDeviceCreateInfo where
        type FieldType "ppEnabledExtensionNames" VkDeviceCreateInfo =
             Ptr CString
        type FieldOptional "ppEnabledExtensionNames" VkDeviceCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "ppEnabledExtensionNames" VkDeviceCreateInfo =
             (56)
{-# LINE 397 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "ppEnabledExtensionNames" VkDeviceCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (56)
{-# LINE 406 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "ppEnabledExtensionNames" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 413 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (56)
{-# LINE 417 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "ppEnabledExtensionNames" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 423 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pEnabledFeatures" VkDeviceCreateInfo where
        type FieldType "pEnabledFeatures" VkDeviceCreateInfo =
             Ptr VkPhysicalDeviceFeatures
        type FieldOptional "pEnabledFeatures" VkDeviceCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pEnabledFeatures" VkDeviceCreateInfo =
             (64)
{-# LINE 431 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pEnabledFeatures" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (64)
{-# LINE 439 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pEnabledFeatures" VkDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 446 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (64)
{-# LINE 450 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pEnabledFeatures" VkDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 456 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceCreateInfo where
        showsPrec d x
          = showString "VkDeviceCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "queueCreateInfoCount = " .
                                  showsPrec d (getField @"queueCreateInfoCount" x) .
                                    showString ", " .
                                      showString "pQueueCreateInfos = " .
                                        showsPrec d (getField @"pQueueCreateInfos" x) .
                                          showString ", " .
                                            showString "enabledLayerCount = " .
                                              showsPrec d (getField @"enabledLayerCount" x) .
                                                showString ", " .
                                                  showString "ppEnabledLayerNames = " .
                                                    showsPrec d (getField @"ppEnabledLayerNames" x)
                                                      .
                                                      showString ", " .
                                                        showString "enabledExtensionCount = " .
                                                          showsPrec d
                                                            (getField @"enabledExtensionCount" x)
                                                            .
                                                            showString ", " .
                                                              showString
                                                                "ppEnabledExtensionNames = "
                                                                .
                                                                showsPrec d
                                                                  (getField
                                                                     @"ppEnabledExtensionNames"
                                                                     x)
                                                                  .
                                                                  showString ", " .
                                                                    showString "pEnabledFeatures = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"pEnabledFeatures"
                                                                           x)
                                                                        . showChar '}'

-- | > 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>
data VkDeviceEventInfoEXT = VkDeviceEventInfoEXT# Addr# ByteArray#

instance Eq VkDeviceEventInfoEXT where
        (VkDeviceEventInfoEXT# a _) == x@(VkDeviceEventInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceEventInfoEXT where
        (VkDeviceEventInfoEXT# a _) `compare` x@(VkDeviceEventInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceEventInfoEXT where
        sizeOf ~_ = (24)
{-# LINE 527 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 530 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceEventInfoEXT where
        unsafeAddr (VkDeviceEventInfoEXT# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceEventInfoEXT# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceEventInfoEXT# (plusAddr# (byteArrayContents# b) off) b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceEventInfoEXT where
        type StructFields VkDeviceEventInfoEXT =
             '["sType", "pNext", "deviceEvent"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceEventInfoEXT = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "sType" VkDeviceEventInfoEXT
         where
        type FieldType "sType" VkDeviceEventInfoEXT = VkStructureType
        type FieldOptional "sType" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceEventInfoEXT =
             (0)
{-# LINE 564 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (0)
{-# LINE 571 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceEventInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 578 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 582 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceEventInfoEXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 588 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceEventInfoEXT
         where
        type FieldType "pNext" VkDeviceEventInfoEXT = Ptr Void
        type FieldOptional "pNext" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceEventInfoEXT =
             (8)
{-# LINE 595 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (8)
{-# LINE 602 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceEventInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 609 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 613 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceEventInfoEXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 619 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "deviceEvent" VkDeviceEventInfoEXT where
        type FieldType "deviceEvent" VkDeviceEventInfoEXT =
             VkDeviceEventTypeEXT
        type FieldOptional "deviceEvent" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
        type FieldOffset "deviceEvent" VkDeviceEventInfoEXT =
             (16)
{-# LINE 627 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "deviceEvent" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 635 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "deviceEvent" VkDeviceEventInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 642 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 646 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "deviceEvent" VkDeviceEventInfoEXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 652 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceEventInfoEXT where
        showsPrec d x
          = showString "VkDeviceEventInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "deviceEvent = " .
                            showsPrec d (getField @"deviceEvent" x) . showChar '}'

-- | > 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>
data VkDeviceGeneratedCommandsFeaturesNVX = VkDeviceGeneratedCommandsFeaturesNVX# Addr#
                                                                                  ByteArray#

instance Eq VkDeviceGeneratedCommandsFeaturesNVX where
        (VkDeviceGeneratedCommandsFeaturesNVX# a _) ==
          x@(VkDeviceGeneratedCommandsFeaturesNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGeneratedCommandsFeaturesNVX where
        (VkDeviceGeneratedCommandsFeaturesNVX# a _) `compare`
          x@(VkDeviceGeneratedCommandsFeaturesNVX# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGeneratedCommandsFeaturesNVX where
        sizeOf ~_
          = (24)
{-# LINE 692 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 696 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGeneratedCommandsFeaturesNVX
         where
        unsafeAddr (VkDeviceGeneratedCommandsFeaturesNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGeneratedCommandsFeaturesNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGeneratedCommandsFeaturesNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGeneratedCommandsFeaturesNVX where
        type StructFields VkDeviceGeneratedCommandsFeaturesNVX =
             '["sType", "pNext", "computeBindingPointSupport"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGeneratedCommandsFeaturesNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGeneratedCommandsFeaturesNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGeneratedCommandsFeaturesNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
        type FieldType "sType" VkDeviceGeneratedCommandsFeaturesNVX =
             VkStructureType
        type FieldOptional "sType" VkDeviceGeneratedCommandsFeaturesNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGeneratedCommandsFeaturesNVX =
             (0)
{-# LINE 735 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGeneratedCommandsFeaturesNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 744 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 751 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 755 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 761 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
        type FieldType "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
             Ptr Void
        type FieldOptional "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
             (8)
{-# LINE 770 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 779 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 786 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 790 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 796 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "computeBindingPointSupport"
           VkDeviceGeneratedCommandsFeaturesNVX
         where
        type FieldType "computeBindingPointSupport"
               VkDeviceGeneratedCommandsFeaturesNVX
             = VkBool32
        type FieldOptional "computeBindingPointSupport"
               VkDeviceGeneratedCommandsFeaturesNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "computeBindingPointSupport"
               VkDeviceGeneratedCommandsFeaturesNVX
             =
             (16)
{-# LINE 811 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "computeBindingPointSupport"
               VkDeviceGeneratedCommandsFeaturesNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 821 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "computeBindingPointSupport"
           VkDeviceGeneratedCommandsFeaturesNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 830 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 834 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "computeBindingPointSupport"
           VkDeviceGeneratedCommandsFeaturesNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 842 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGeneratedCommandsFeaturesNVX where
        showsPrec d x
          = showString "VkDeviceGeneratedCommandsFeaturesNVX {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "computeBindingPointSupport = " .
                            showsPrec d (getField @"computeBindingPointSupport" x) .
                              showChar '}'

-- | > 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>
data VkDeviceGeneratedCommandsLimitsNVX = VkDeviceGeneratedCommandsLimitsNVX# Addr#
                                                                              ByteArray#

instance Eq VkDeviceGeneratedCommandsLimitsNVX where
        (VkDeviceGeneratedCommandsLimitsNVX# a _) ==
          x@(VkDeviceGeneratedCommandsLimitsNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGeneratedCommandsLimitsNVX where
        (VkDeviceGeneratedCommandsLimitsNVX# a _) `compare`
          x@(VkDeviceGeneratedCommandsLimitsNVX# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGeneratedCommandsLimitsNVX where
        sizeOf ~_ = (40)
{-# LINE 886 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 890 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGeneratedCommandsLimitsNVX where
        unsafeAddr (VkDeviceGeneratedCommandsLimitsNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGeneratedCommandsLimitsNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGeneratedCommandsLimitsNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGeneratedCommandsLimitsNVX where
        type StructFields VkDeviceGeneratedCommandsLimitsNVX =
             '["sType", "pNext", "maxIndirectCommandsLayoutTokenCount", -- ' closing tick for hsc2hs
               "maxObjectEntryCounts", "minSequenceCountBufferOffsetAlignment",
               "minSequenceIndexBufferOffsetAlignment",
               "minCommandsTokenBufferOffsetAlignment"]
        type CUnionType VkDeviceGeneratedCommandsLimitsNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGeneratedCommandsLimitsNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGeneratedCommandsLimitsNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGeneratedCommandsLimitsNVX where
        type FieldType "sType" VkDeviceGeneratedCommandsLimitsNVX =
             VkStructureType
        type FieldOptional "sType" VkDeviceGeneratedCommandsLimitsNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGeneratedCommandsLimitsNVX =
             (0)
{-# LINE 931 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGeneratedCommandsLimitsNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 940 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGeneratedCommandsLimitsNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 947 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 951 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGeneratedCommandsLimitsNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 957 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
        type FieldType "pNext" VkDeviceGeneratedCommandsLimitsNVX =
             Ptr Void
        type FieldOptional "pNext" VkDeviceGeneratedCommandsLimitsNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGeneratedCommandsLimitsNVX =
             (8)
{-# LINE 966 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGeneratedCommandsLimitsNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 975 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 982 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 986 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 992 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxIndirectCommandsLayoutTokenCount"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        type FieldType "maxIndirectCommandsLayoutTokenCount"
               VkDeviceGeneratedCommandsLimitsNVX
             = Word32
        type FieldOptional "maxIndirectCommandsLayoutTokenCount"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxIndirectCommandsLayoutTokenCount"
               VkDeviceGeneratedCommandsLimitsNVX
             =
             (16)
{-# LINE 1007 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "maxIndirectCommandsLayoutTokenCount"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1017 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxIndirectCommandsLayoutTokenCount"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1026 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1030 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxIndirectCommandsLayoutTokenCount"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1038 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxObjectEntryCounts" VkDeviceGeneratedCommandsLimitsNVX
         where
        type FieldType "maxObjectEntryCounts"
               VkDeviceGeneratedCommandsLimitsNVX
             = Word32
        type FieldOptional "maxObjectEntryCounts"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxObjectEntryCounts"
               VkDeviceGeneratedCommandsLimitsNVX
             =
             (20)
{-# LINE 1052 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "maxObjectEntryCounts"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 1062 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxObjectEntryCounts"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1071 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 1075 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxObjectEntryCounts"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1083 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minSequenceCountBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        type FieldType "minSequenceCountBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = Word32
        type FieldOptional "minSequenceCountBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minSequenceCountBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             =
             (24)
{-# LINE 1098 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "minSequenceCountBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 1108 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "minSequenceCountBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1117 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 1121 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "minSequenceCountBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1129 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minSequenceIndexBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        type FieldType "minSequenceIndexBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = Word32
        type FieldOptional "minSequenceIndexBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minSequenceIndexBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             =
             (28)
{-# LINE 1144 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "minSequenceIndexBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 1154 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "minSequenceIndexBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 1163 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 1167 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "minSequenceIndexBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 1175 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minCommandsTokenBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        type FieldType "minCommandsTokenBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = Word32
        type FieldOptional "minCommandsTokenBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minCommandsTokenBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             =
             (32)
{-# LINE 1190 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "minCommandsTokenBufferOffsetAlignment"
               VkDeviceGeneratedCommandsLimitsNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 1200 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "minCommandsTokenBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1209 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 1213 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "minCommandsTokenBufferOffsetAlignment"
           VkDeviceGeneratedCommandsLimitsNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1221 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGeneratedCommandsLimitsNVX where
        showsPrec d x
          = showString "VkDeviceGeneratedCommandsLimitsNVX {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "maxIndirectCommandsLayoutTokenCount = " .
                            showsPrec d (getField @"maxIndirectCommandsLayoutTokenCount" x) .
                              showString ", " .
                                showString "maxObjectEntryCounts = " .
                                  showsPrec d (getField @"maxObjectEntryCounts" x) .
                                    showString ", " .
                                      showString "minSequenceCountBufferOffsetAlignment = " .
                                        showsPrec d
                                          (getField @"minSequenceCountBufferOffsetAlignment" x)
                                          .
                                          showString ", " .
                                            showString "minSequenceIndexBufferOffsetAlignment = " .
                                              showsPrec d
                                                (getField @"minSequenceIndexBufferOffsetAlignment"
                                                   x)
                                                .
                                                showString ", " .
                                                  showString
                                                    "minCommandsTokenBufferOffsetAlignment = "
                                                    .
                                                    showsPrec d
                                                      (getField
                                                         @"minCommandsTokenBufferOffsetAlignment"
                                                         x)
                                                      . showChar '}'

-- | > 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>
data VkDeviceGroupBindSparseInfo = VkDeviceGroupBindSparseInfo# Addr#
                                                                ByteArray#

instance Eq VkDeviceGroupBindSparseInfo where
        (VkDeviceGroupBindSparseInfo# a _) ==
          x@(VkDeviceGroupBindSparseInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupBindSparseInfo where
        (VkDeviceGroupBindSparseInfo# a _) `compare`
          x@(VkDeviceGroupBindSparseInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupBindSparseInfo where
        sizeOf ~_ = (24)
{-# LINE 1283 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 1286 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupBindSparseInfo where
        unsafeAddr (VkDeviceGroupBindSparseInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupBindSparseInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupBindSparseInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupBindSparseInfo where
        type StructFields VkDeviceGroupBindSparseInfo =
             '["sType", "pNext", "resourceDeviceIndex", "memoryDeviceIndex"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupBindSparseInfo =
             '[VkBindSparseInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupBindSparseInfo where
        type FieldType "sType" VkDeviceGroupBindSparseInfo =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupBindSparseInfo =
             (0)
{-# LINE 1324 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1332 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupBindSparseInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1339 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1343 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupBindSparseInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1349 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupBindSparseInfo where
        type FieldType "pNext" VkDeviceGroupBindSparseInfo = Ptr Void
        type FieldOptional "pNext" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupBindSparseInfo =
             (8)
{-# LINE 1356 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1364 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupBindSparseInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1371 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1375 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupBindSparseInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1381 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "resourceDeviceIndex" VkDeviceGroupBindSparseInfo where
        type FieldType "resourceDeviceIndex" VkDeviceGroupBindSparseInfo =
             Word32
        type FieldOptional "resourceDeviceIndex"
               VkDeviceGroupBindSparseInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
             =
             (16)
{-# LINE 1392 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1401 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1409 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1413 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1420 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "memoryDeviceIndex" VkDeviceGroupBindSparseInfo where
        type FieldType "memoryDeviceIndex" VkDeviceGroupBindSparseInfo =
             Word32
        type FieldOptional "memoryDeviceIndex" VkDeviceGroupBindSparseInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "memoryDeviceIndex" VkDeviceGroupBindSparseInfo =
             (20)
{-# LINE 1429 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "memoryDeviceIndex" VkDeviceGroupBindSparseInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 1438 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "memoryDeviceIndex" VkDeviceGroupBindSparseInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1445 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 1449 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "memoryDeviceIndex" VkDeviceGroupBindSparseInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1455 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupBindSparseInfo where
        showsPrec d x
          = showString "VkDeviceGroupBindSparseInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "resourceDeviceIndex = " .
                            showsPrec d (getField @"resourceDeviceIndex" x) .
                              showString ", " .
                                showString "memoryDeviceIndex = " .
                                  showsPrec d (getField @"memoryDeviceIndex" x) . showChar '}'

-- | 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>
data VkDeviceGroupCommandBufferBeginInfo = VkDeviceGroupCommandBufferBeginInfo# Addr#
                                                                                ByteArray#

instance Eq VkDeviceGroupCommandBufferBeginInfo where
        (VkDeviceGroupCommandBufferBeginInfo# a _) ==
          x@(VkDeviceGroupCommandBufferBeginInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupCommandBufferBeginInfo where
        (VkDeviceGroupCommandBufferBeginInfo# a _) `compare`
          x@(VkDeviceGroupCommandBufferBeginInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupCommandBufferBeginInfo where
        sizeOf ~_ = (24)
{-# LINE 1500 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1504 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupCommandBufferBeginInfo
         where
        unsafeAddr (VkDeviceGroupCommandBufferBeginInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupCommandBufferBeginInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupCommandBufferBeginInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupCommandBufferBeginInfo where
        type StructFields VkDeviceGroupCommandBufferBeginInfo =
             '["sType", "pNext", "deviceMask"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGroupCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupCommandBufferBeginInfo =
             '[VkCommandBufferBeginInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupCommandBufferBeginInfo where
        type FieldType "sType" VkDeviceGroupCommandBufferBeginInfo =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupCommandBufferBeginInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupCommandBufferBeginInfo =
             (0)
{-# LINE 1544 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupCommandBufferBeginInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1553 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupCommandBufferBeginInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1560 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1564 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupCommandBufferBeginInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1570 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupCommandBufferBeginInfo where
        type FieldType "pNext" VkDeviceGroupCommandBufferBeginInfo =
             Ptr Void
        type FieldOptional "pNext" VkDeviceGroupCommandBufferBeginInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupCommandBufferBeginInfo =
             (8)
{-# LINE 1579 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupCommandBufferBeginInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1588 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupCommandBufferBeginInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1595 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1599 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupCommandBufferBeginInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1605 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "deviceMask" VkDeviceGroupCommandBufferBeginInfo where
        type FieldType "deviceMask" VkDeviceGroupCommandBufferBeginInfo =
             Word32
        type FieldOptional "deviceMask" VkDeviceGroupCommandBufferBeginInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "deviceMask" VkDeviceGroupCommandBufferBeginInfo =
             (16)
{-# LINE 1614 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "deviceMask" VkDeviceGroupCommandBufferBeginInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1623 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "deviceMask" VkDeviceGroupCommandBufferBeginInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1630 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1634 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "deviceMask" VkDeviceGroupCommandBufferBeginInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1641 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupCommandBufferBeginInfo where
        showsPrec d x
          = showString "VkDeviceGroupCommandBufferBeginInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "deviceMask = " .
                            showsPrec d (getField @"deviceMask" x) . showChar '}'

-- | 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>
data VkDeviceGroupDeviceCreateInfo = VkDeviceGroupDeviceCreateInfo# Addr#
                                                                    ByteArray#

instance Eq VkDeviceGroupDeviceCreateInfo where
        (VkDeviceGroupDeviceCreateInfo# a _) ==
          x@(VkDeviceGroupDeviceCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupDeviceCreateInfo where
        (VkDeviceGroupDeviceCreateInfo# a _) `compare`
          x@(VkDeviceGroupDeviceCreateInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupDeviceCreateInfo where
        sizeOf ~_ = (32)
{-# LINE 1684 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1688 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupDeviceCreateInfo where
        unsafeAddr (VkDeviceGroupDeviceCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupDeviceCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupDeviceCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupDeviceCreateInfo where
        type StructFields VkDeviceGroupDeviceCreateInfo =
             '["sType", "pNext", "physicalDeviceCount", "pPhysicalDevices"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupDeviceCreateInfo =
             '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupDeviceCreateInfo where
        type FieldType "sType" VkDeviceGroupDeviceCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupDeviceCreateInfo =
             (0)
{-# LINE 1726 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1734 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1741 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1745 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1751 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupDeviceCreateInfo where
        type FieldType "pNext" VkDeviceGroupDeviceCreateInfo = Ptr Void
        type FieldOptional "pNext" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupDeviceCreateInfo =
             (8)
{-# LINE 1758 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1766 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1773 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1777 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupDeviceCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1783 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo where
        type FieldType "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo
             = Word32
        type FieldOptional "physicalDeviceCount"
               VkDeviceGroupDeviceCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "physicalDeviceCount"
               VkDeviceGroupDeviceCreateInfo
             =
             (16)
{-# LINE 1795 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "physicalDeviceCount"
               VkDeviceGroupDeviceCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1805 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1813 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1817 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1824 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo where
        type FieldType "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo =
             Ptr VkPhysicalDevice
        type FieldOptional "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo =
             (24)
{-# LINE 1833 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 1842 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1849 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 1853 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1860 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupDeviceCreateInfo where
        showsPrec d x
          = showString "VkDeviceGroupDeviceCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "physicalDeviceCount = " .
                            showsPrec d (getField @"physicalDeviceCount" x) .
                              showString ", " .
                                showString "pPhysicalDevices = " .
                                  showsPrec d (getField @"pPhysicalDevices" x) . showChar '}'

-- | 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>
data VkDeviceGroupPresentCapabilitiesKHR = VkDeviceGroupPresentCapabilitiesKHR# Addr#
                                                                                ByteArray#

instance Eq VkDeviceGroupPresentCapabilitiesKHR where
        (VkDeviceGroupPresentCapabilitiesKHR# a _) ==
          x@(VkDeviceGroupPresentCapabilitiesKHR# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupPresentCapabilitiesKHR where
        (VkDeviceGroupPresentCapabilitiesKHR# a _) `compare`
          x@(VkDeviceGroupPresentCapabilitiesKHR# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupPresentCapabilitiesKHR where
        sizeOf ~_ = (152)
{-# LINE 1907 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1911 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupPresentCapabilitiesKHR
         where
        unsafeAddr (VkDeviceGroupPresentCapabilitiesKHR# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupPresentCapabilitiesKHR# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupPresentCapabilitiesKHR#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupPresentCapabilitiesKHR where
        type StructFields VkDeviceGroupPresentCapabilitiesKHR =
             '["sType", "pNext", "presentMask", "modes"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGroupPresentCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupPresentCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupPresentCapabilitiesKHR = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupPresentCapabilitiesKHR where
        type FieldType "sType" VkDeviceGroupPresentCapabilitiesKHR =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupPresentCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupPresentCapabilitiesKHR =
             (0)
{-# LINE 1950 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupPresentCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1959 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupPresentCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1966 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1970 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupPresentCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1976 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupPresentCapabilitiesKHR where
        type FieldType "pNext" VkDeviceGroupPresentCapabilitiesKHR =
             Ptr Void
        type FieldOptional "pNext" VkDeviceGroupPresentCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupPresentCapabilitiesKHR =
             (8)
{-# LINE 1985 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupPresentCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1994 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupPresentCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 2001 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 2005 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupPresentCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 2011 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "presentMask" VkDeviceGroupPresentCapabilitiesKHR where
        type FieldType "presentMask" VkDeviceGroupPresentCapabilitiesKHR =
             Word32
        type FieldOptional "presentMask"
               VkDeviceGroupPresentCapabilitiesKHR
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "presentMask" VkDeviceGroupPresentCapabilitiesKHR
             =
             (16)
{-# LINE 2022 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "presentMask" VkDeviceGroupPresentCapabilitiesKHR
             = 'True -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 2031 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         (KnownNat idx,
          IndexInBounds "presentMask" idx
            VkDeviceGroupPresentCapabilitiesKHR) =>
         CanReadFieldArray "presentMask" idx
           VkDeviceGroupPresentCapabilitiesKHR
         where
        {-# SPECIALISE instance
                       CanReadFieldArray "presentMask" 0
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# SPECIALISE instance
                       CanReadFieldArray "presentMask" 1
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# SPECIALISE instance
                       CanReadFieldArray "presentMask" 2
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# SPECIALISE instance
                       CanReadFieldArray "presentMask" 3
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}
        type FieldArrayLength "presentMask"
               VkDeviceGroupPresentCapabilitiesKHR
             = VK_MAX_DEVICE_GROUP_SIZE

        {-# INLINE fieldArrayLength #-}
        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE

        {-# INLINE getFieldArray #-}
        getFieldArray = f
          where {-# NOINLINE f #-}
                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
                off
                  = (16)
{-# LINE 2071 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                      +
                      sizeOf (undefined :: Word32) *
                        fromInteger (natVal' (proxy# :: Proxy# idx)) -- ' closing tick for hsc2hs

        {-# INLINE readFieldArray #-}
        readFieldArray p
          = peekByteOff p
              ((16)
{-# LINE 2079 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                 +
                 sizeOf (undefined :: Word32) *
                   fromInteger (natVal' (proxy# :: Proxy# idx))) -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         (KnownNat idx,
          IndexInBounds "presentMask" idx
            VkDeviceGroupPresentCapabilitiesKHR) =>
         CanWriteFieldArray "presentMask" idx
           VkDeviceGroupPresentCapabilitiesKHR
         where
        {-# SPECIALISE instance
                       CanWriteFieldArray "presentMask" 0
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# SPECIALISE instance
                       CanWriteFieldArray "presentMask" 1
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# SPECIALISE instance
                       CanWriteFieldArray "presentMask" 2
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# SPECIALISE instance
                       CanWriteFieldArray "presentMask" 3
                         VkDeviceGroupPresentCapabilitiesKHR
                       #-}

        {-# INLINE writeFieldArray #-}
        writeFieldArray p
          = pokeByteOff p
              ((16)
{-# LINE 2114 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
                 +
                 sizeOf (undefined :: Word32) *
                   fromInteger (natVal' (proxy# :: Proxy# idx))) -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "modes" VkDeviceGroupPresentCapabilitiesKHR where
        type FieldType "modes" VkDeviceGroupPresentCapabilitiesKHR =
             VkDeviceGroupPresentModeFlagsKHR
        type FieldOptional "modes" VkDeviceGroupPresentCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "modes" VkDeviceGroupPresentCapabilitiesKHR =
             (144)
{-# LINE 2126 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "modes" VkDeviceGroupPresentCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (144)
{-# LINE 2135 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "modes" VkDeviceGroupPresentCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (144))
{-# LINE 2142 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (144)
{-# LINE 2146 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "modes" VkDeviceGroupPresentCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (144)
{-# LINE 2152 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupPresentCapabilitiesKHR where
        showsPrec d x
          = showString "VkDeviceGroupPresentCapabilitiesKHR {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          (showString "presentMask = [" .
                             showsPrec d
                               (let s = sizeOf
                                          (undefined ::
                                             FieldType "presentMask"
                                               VkDeviceGroupPresentCapabilitiesKHR)
                                    o = fieldOffset @"presentMask"
                                          @VkDeviceGroupPresentCapabilitiesKHR
                                    f i
                                      = peekByteOff (unsafePtr x) i ::
                                          IO
                                            (FieldType "presentMask"
                                               VkDeviceGroupPresentCapabilitiesKHR)
                                  in
                                  unsafeDupablePerformIO . mapM f $
                                    map (\ i -> o + i * s) [0 .. VK_MAX_DEVICE_GROUP_SIZE - 1])
                               . showChar ']')
                            .
                            showString ", " .
                              showString "modes = " .
                                showsPrec d (getField @"modes" x) . showChar '}'

-- | > 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>
data VkDeviceGroupPresentInfoKHR = VkDeviceGroupPresentInfoKHR# Addr#
                                                                ByteArray#

instance Eq VkDeviceGroupPresentInfoKHR where
        (VkDeviceGroupPresentInfoKHR# a _) ==
          x@(VkDeviceGroupPresentInfoKHR# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupPresentInfoKHR where
        (VkDeviceGroupPresentInfoKHR# a _) `compare`
          x@(VkDeviceGroupPresentInfoKHR# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupPresentInfoKHR where
        sizeOf ~_ = (40)
{-# LINE 2211 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 2214 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupPresentInfoKHR where
        unsafeAddr (VkDeviceGroupPresentInfoKHR# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupPresentInfoKHR# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupPresentInfoKHR#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupPresentInfoKHR where
        type StructFields VkDeviceGroupPresentInfoKHR =
             '["sType", "pNext", "swapchainCount", "pDeviceMasks", "mode"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupPresentInfoKHR =
             '[VkPresentInfoKHR] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupPresentInfoKHR where
        type FieldType "sType" VkDeviceGroupPresentInfoKHR =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupPresentInfoKHR =
             (0)
{-# LINE 2252 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 2260 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 2267 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 2271 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 2277 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupPresentInfoKHR where
        type FieldType "pNext" VkDeviceGroupPresentInfoKHR = Ptr Void
        type FieldOptional "pNext" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupPresentInfoKHR =
             (8)
{-# LINE 2284 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 2292 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 2299 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 2303 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 2309 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "swapchainCount" VkDeviceGroupPresentInfoKHR where
        type FieldType "swapchainCount" VkDeviceGroupPresentInfoKHR =
             Word32
        type FieldOptional "swapchainCount" VkDeviceGroupPresentInfoKHR =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "swapchainCount" VkDeviceGroupPresentInfoKHR =
             (16)
{-# LINE 2318 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "swapchainCount" VkDeviceGroupPresentInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 2327 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "swapchainCount" VkDeviceGroupPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2334 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 2338 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "swapchainCount" VkDeviceGroupPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2344 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDeviceMasks" VkDeviceGroupPresentInfoKHR where
        type FieldType "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
             Ptr Word32
        type FieldOptional "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
             (24)
{-# LINE 2353 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 2362 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pDeviceMasks" VkDeviceGroupPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2369 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 2373 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pDeviceMasks" VkDeviceGroupPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2379 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "mode" VkDeviceGroupPresentInfoKHR where
        type FieldType "mode" VkDeviceGroupPresentInfoKHR =
             VkDeviceGroupPresentModeFlagBitsKHR
        type FieldOptional "mode" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "mode" VkDeviceGroupPresentInfoKHR =
             (32)
{-# LINE 2387 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "mode" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 2395 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "mode" VkDeviceGroupPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2402 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 2406 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "mode" VkDeviceGroupPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2412 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupPresentInfoKHR where
        showsPrec d x
          = showString "VkDeviceGroupPresentInfoKHR {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "swapchainCount = " .
                            showsPrec d (getField @"swapchainCount" x) .
                              showString ", " .
                                showString "pDeviceMasks = " .
                                  showsPrec d (getField @"pDeviceMasks" x) .
                                    showString ", " .
                                      showString "mode = " .
                                        showsPrec d (getField @"mode" x) . showChar '}'

-- | > 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>
data VkDeviceGroupRenderPassBeginInfo = VkDeviceGroupRenderPassBeginInfo# Addr#
                                                                          ByteArray#

instance Eq VkDeviceGroupRenderPassBeginInfo where
        (VkDeviceGroupRenderPassBeginInfo# a _) ==
          x@(VkDeviceGroupRenderPassBeginInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupRenderPassBeginInfo where
        (VkDeviceGroupRenderPassBeginInfo# a _) `compare`
          x@(VkDeviceGroupRenderPassBeginInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupRenderPassBeginInfo where
        sizeOf ~_ = (32)
{-# LINE 2459 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 2463 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupRenderPassBeginInfo where
        unsafeAddr (VkDeviceGroupRenderPassBeginInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupRenderPassBeginInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupRenderPassBeginInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupRenderPassBeginInfo where
        type StructFields VkDeviceGroupRenderPassBeginInfo =
             '["sType", "pNext", "deviceMask", "deviceRenderAreaCount", -- ' closing tick for hsc2hs
               "pDeviceRenderAreas"]
        type CUnionType VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupRenderPassBeginInfo =
             '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupRenderPassBeginInfo where
        type FieldType "sType" VkDeviceGroupRenderPassBeginInfo =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupRenderPassBeginInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupRenderPassBeginInfo =
             (0)
{-# LINE 2503 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 2511 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupRenderPassBeginInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 2518 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 2522 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupRenderPassBeginInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 2528 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupRenderPassBeginInfo where
        type FieldType "pNext" VkDeviceGroupRenderPassBeginInfo = Ptr Void
        type FieldOptional "pNext" VkDeviceGroupRenderPassBeginInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupRenderPassBeginInfo =
             (8)
{-# LINE 2536 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 2544 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupRenderPassBeginInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 2551 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 2555 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupRenderPassBeginInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 2561 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "deviceMask" VkDeviceGroupRenderPassBeginInfo where
        type FieldType "deviceMask" VkDeviceGroupRenderPassBeginInfo =
             Word32
        type FieldOptional "deviceMask" VkDeviceGroupRenderPassBeginInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "deviceMask" VkDeviceGroupRenderPassBeginInfo =
             (16)
{-# LINE 2570 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "deviceMask" VkDeviceGroupRenderPassBeginInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 2579 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "deviceMask" VkDeviceGroupRenderPassBeginInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2586 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 2590 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "deviceMask" VkDeviceGroupRenderPassBeginInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2596 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "deviceRenderAreaCount" VkDeviceGroupRenderPassBeginInfo
         where
        type FieldType "deviceRenderAreaCount"
               VkDeviceGroupRenderPassBeginInfo
             = Word32
        type FieldOptional "deviceRenderAreaCount"
               VkDeviceGroupRenderPassBeginInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "deviceRenderAreaCount"
               VkDeviceGroupRenderPassBeginInfo
             =
             (20)
{-# LINE 2610 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "deviceRenderAreaCount"
               VkDeviceGroupRenderPassBeginInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 2620 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "deviceRenderAreaCount"
           VkDeviceGroupRenderPassBeginInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 2629 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 2633 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "deviceRenderAreaCount"
           VkDeviceGroupRenderPassBeginInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 2641 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfo
         where
        type FieldType "pDeviceRenderAreas"
               VkDeviceGroupRenderPassBeginInfo
             = Ptr VkRect2D
        type FieldOptional "pDeviceRenderAreas"
               VkDeviceGroupRenderPassBeginInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pDeviceRenderAreas"
               VkDeviceGroupRenderPassBeginInfo
             =
             (24)
{-# LINE 2655 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pDeviceRenderAreas"
               VkDeviceGroupRenderPassBeginInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 2665 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2673 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 2677 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2684 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupRenderPassBeginInfo where
        showsPrec d x
          = showString "VkDeviceGroupRenderPassBeginInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "deviceMask = " .
                            showsPrec d (getField @"deviceMask" x) .
                              showString ", " .
                                showString "deviceRenderAreaCount = " .
                                  showsPrec d (getField @"deviceRenderAreaCount" x) .
                                    showString ", " .
                                      showString "pDeviceRenderAreas = " .
                                        showsPrec d (getField @"pDeviceRenderAreas" x) .
                                          showChar '}'

-- | 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>
data VkDeviceGroupSubmitInfo = VkDeviceGroupSubmitInfo# Addr#
                                                        ByteArray#

instance Eq VkDeviceGroupSubmitInfo where
        (VkDeviceGroupSubmitInfo# a _) == x@(VkDeviceGroupSubmitInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupSubmitInfo where
        (VkDeviceGroupSubmitInfo# a _) `compare`
          x@(VkDeviceGroupSubmitInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupSubmitInfo where
        sizeOf ~_ = (64)
{-# LINE 2737 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 2740 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupSubmitInfo where
        unsafeAddr (VkDeviceGroupSubmitInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupSubmitInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupSubmitInfo# (plusAddr# (byteArrayContents# b) off) b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupSubmitInfo where
        type StructFields VkDeviceGroupSubmitInfo =
             '["sType", "pNext", "waitSemaphoreCount", -- ' closing tick for hsc2hs
               "pWaitSemaphoreDeviceIndices", "commandBufferCount",
               "pCommandBufferDeviceMasks", "signalSemaphoreCount",
               "pSignalSemaphoreDeviceIndices"]
        type CUnionType VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupSubmitInfo = '[VkSubmitInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupSubmitInfo where
        type FieldType "sType" VkDeviceGroupSubmitInfo = VkStructureType
        type FieldOptional "sType" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupSubmitInfo =
             (0)
{-# LINE 2777 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (0)
{-# LINE 2784 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupSubmitInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 2791 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 2795 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupSubmitInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 2801 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupSubmitInfo where
        type FieldType "pNext" VkDeviceGroupSubmitInfo = Ptr Void
        type FieldOptional "pNext" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupSubmitInfo =
             (8)
{-# LINE 2808 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (8)
{-# LINE 2815 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupSubmitInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 2822 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 2826 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupSubmitInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 2832 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "waitSemaphoreCount" VkDeviceGroupSubmitInfo where
        type FieldType "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
             Word32
        type FieldOptional "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
             (16)
{-# LINE 2841 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 2850 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "waitSemaphoreCount" VkDeviceGroupSubmitInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2857 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 2861 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "waitSemaphoreCount" VkDeviceGroupSubmitInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2867 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
         where
        type FieldType "pWaitSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             = Ptr Word32
        type FieldOptional "pWaitSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pWaitSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             =
             (24)
{-# LINE 2881 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pWaitSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 2891 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2899 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 2903 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2910 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "commandBufferCount" VkDeviceGroupSubmitInfo where
        type FieldType "commandBufferCount" VkDeviceGroupSubmitInfo =
             Word32
        type FieldOptional "commandBufferCount" VkDeviceGroupSubmitInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "commandBufferCount" VkDeviceGroupSubmitInfo =
             (32)
{-# LINE 2919 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "commandBufferCount" VkDeviceGroupSubmitInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 2928 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "commandBufferCount" VkDeviceGroupSubmitInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2935 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 2939 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "commandBufferCount" VkDeviceGroupSubmitInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2945 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo where
        type FieldType "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo
             = Ptr Word32
        type FieldOptional "pCommandBufferDeviceMasks"
               VkDeviceGroupSubmitInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pCommandBufferDeviceMasks"
               VkDeviceGroupSubmitInfo
             =
             (40)
{-# LINE 2957 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pCommandBufferDeviceMasks"
               VkDeviceGroupSubmitInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 2967 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 2975 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 2979 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 2986 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "signalSemaphoreCount" VkDeviceGroupSubmitInfo where
        type FieldType "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
             Word32
        type FieldOptional "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
             (48)
{-# LINE 2995 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (48)
{-# LINE 3004 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "signalSemaphoreCount" VkDeviceGroupSubmitInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 3011 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (48)
{-# LINE 3015 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "signalSemaphoreCount" VkDeviceGroupSubmitInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 3021 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pSignalSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
         where
        type FieldType "pSignalSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             = Ptr Word32
        type FieldOptional "pSignalSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pSignalSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             =
             (56)
{-# LINE 3035 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pSignalSemaphoreDeviceIndices"
               VkDeviceGroupSubmitInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (56)
{-# LINE 3045 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pSignalSemaphoreDeviceIndices"
           VkDeviceGroupSubmitInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 3054 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (56)
{-# LINE 3058 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pSignalSemaphoreDeviceIndices"
           VkDeviceGroupSubmitInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 3066 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupSubmitInfo where
        showsPrec d x
          = showString "VkDeviceGroupSubmitInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "waitSemaphoreCount = " .
                            showsPrec d (getField @"waitSemaphoreCount" x) .
                              showString ", " .
                                showString "pWaitSemaphoreDeviceIndices = " .
                                  showsPrec d (getField @"pWaitSemaphoreDeviceIndices" x) .
                                    showString ", " .
                                      showString "commandBufferCount = " .
                                        showsPrec d (getField @"commandBufferCount" x) .
                                          showString ", " .
                                            showString "pCommandBufferDeviceMasks = " .
                                              showsPrec d (getField @"pCommandBufferDeviceMasks" x)
                                                .
                                                showString ", " .
                                                  showString "signalSemaphoreCount = " .
                                                    showsPrec d (getField @"signalSemaphoreCount" x)
                                                      .
                                                      showString ", " .
                                                        showString
                                                          "pSignalSemaphoreDeviceIndices = "
                                                          .
                                                          showsPrec d
                                                            (getField
                                                               @"pSignalSemaphoreDeviceIndices"
                                                               x)
                                                            . showChar '}'

-- | 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>
data VkDeviceGroupSwapchainCreateInfoKHR = VkDeviceGroupSwapchainCreateInfoKHR# Addr#
                                                                                ByteArray#

instance Eq VkDeviceGroupSwapchainCreateInfoKHR where
        (VkDeviceGroupSwapchainCreateInfoKHR# a _) ==
          x@(VkDeviceGroupSwapchainCreateInfoKHR# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceGroupSwapchainCreateInfoKHR where
        (VkDeviceGroupSwapchainCreateInfoKHR# a _) `compare`
          x@(VkDeviceGroupSwapchainCreateInfoKHR# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceGroupSwapchainCreateInfoKHR where
        sizeOf ~_ = (24)
{-# LINE 3131 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 3135 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceGroupSwapchainCreateInfoKHR
         where
        unsafeAddr (VkDeviceGroupSwapchainCreateInfoKHR# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceGroupSwapchainCreateInfoKHR# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceGroupSwapchainCreateInfoKHR#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceGroupSwapchainCreateInfoKHR where
        type StructFields VkDeviceGroupSwapchainCreateInfoKHR =
             '["sType", "pNext", "modes"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceGroupSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceGroupSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceGroupSwapchainCreateInfoKHR =
             '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceGroupSwapchainCreateInfoKHR where
        type FieldType "sType" VkDeviceGroupSwapchainCreateInfoKHR =
             VkStructureType
        type FieldOptional "sType" VkDeviceGroupSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceGroupSwapchainCreateInfoKHR =
             (0)
{-# LINE 3175 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceGroupSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 3184 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceGroupSwapchainCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3191 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3195 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceGroupSwapchainCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3201 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceGroupSwapchainCreateInfoKHR where
        type FieldType "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
             Ptr Void
        type FieldOptional "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
             (8)
{-# LINE 3210 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 3219 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceGroupSwapchainCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3226 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3230 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceGroupSwapchainCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3236 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "modes" VkDeviceGroupSwapchainCreateInfoKHR where
        type FieldType "modes" VkDeviceGroupSwapchainCreateInfoKHR =
             VkDeviceGroupPresentModeFlagsKHR
        type FieldOptional "modes" VkDeviceGroupSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "modes" VkDeviceGroupSwapchainCreateInfoKHR =
             (16)
{-# LINE 3245 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "modes" VkDeviceGroupSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 3254 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "modes" VkDeviceGroupSwapchainCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3261 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 3265 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "modes" VkDeviceGroupSwapchainCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3271 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceGroupSwapchainCreateInfoKHR where
        showsPrec d x
          = showString "VkDeviceGroupSwapchainCreateInfoKHR {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "modes = " .
                            showsPrec d (getField @"modes" x) . showChar '}'

-- | > 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>
data VkDeviceQueueCreateInfo = VkDeviceQueueCreateInfo# Addr#
                                                        ByteArray#

instance Eq VkDeviceQueueCreateInfo where
        (VkDeviceQueueCreateInfo# a _) == x@(VkDeviceQueueCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceQueueCreateInfo where
        (VkDeviceQueueCreateInfo# a _) `compare`
          x@(VkDeviceQueueCreateInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceQueueCreateInfo where
        sizeOf ~_ = (40)
{-# LINE 3311 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 3314 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceQueueCreateInfo where
        unsafeAddr (VkDeviceQueueCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceQueueCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceQueueCreateInfo# (plusAddr# (byteArrayContents# b) off) b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceQueueCreateInfo where
        type StructFields VkDeviceQueueCreateInfo =
             '["sType", "pNext", "flags", "queueFamilyIndex", "queueCount", -- ' closing tick for hsc2hs
               "pQueuePriorities"]
        type CUnionType VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceQueueCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceQueueCreateInfo where
        type FieldType "sType" VkDeviceQueueCreateInfo = VkStructureType
        type FieldOptional "sType" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceQueueCreateInfo =
             (0)
{-# LINE 3349 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (0)
{-# LINE 3356 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceQueueCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3363 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3367 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceQueueCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3373 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceQueueCreateInfo where
        type FieldType "pNext" VkDeviceQueueCreateInfo = Ptr Void
        type FieldOptional "pNext" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceQueueCreateInfo =
             (8)
{-# LINE 3380 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (8)
{-# LINE 3387 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceQueueCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3394 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3398 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceQueueCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3404 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkDeviceQueueCreateInfo where
        type FieldType "flags" VkDeviceQueueCreateInfo =
             VkDeviceQueueCreateFlags
        type FieldOptional "flags" VkDeviceQueueCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkDeviceQueueCreateInfo =
             (16)
{-# LINE 3412 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "flags" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset = (16)
{-# LINE 3419 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkDeviceQueueCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3426 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 3430 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkDeviceQueueCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3436 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "queueFamilyIndex" VkDeviceQueueCreateInfo where
        type FieldType "queueFamilyIndex" VkDeviceQueueCreateInfo = Word32
        type FieldOptional "queueFamilyIndex" VkDeviceQueueCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "queueFamilyIndex" VkDeviceQueueCreateInfo =
             (20)
{-# LINE 3444 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "queueFamilyIndex" VkDeviceQueueCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 3453 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "queueFamilyIndex" VkDeviceQueueCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 3460 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 3464 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "queueFamilyIndex" VkDeviceQueueCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 3470 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "queueCount" VkDeviceQueueCreateInfo where
        type FieldType "queueCount" VkDeviceQueueCreateInfo = Word32
        type FieldOptional "queueCount" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "queueCount" VkDeviceQueueCreateInfo =
             (24)
{-# LINE 3477 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "queueCount" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 3485 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "queueCount" VkDeviceQueueCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 3492 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 3496 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "queueCount" VkDeviceQueueCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 3502 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pQueuePriorities" VkDeviceQueueCreateInfo where
        type FieldType "pQueuePriorities" VkDeviceQueueCreateInfo =
             Ptr Float
{-# LINE 3507 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldOptional "pQueuePriorities" VkDeviceQueueCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pQueuePriorities" VkDeviceQueueCreateInfo =
             (32)
{-# LINE 3511 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pQueuePriorities" VkDeviceQueueCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 3520 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pQueuePriorities" VkDeviceQueueCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 3527 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 3531 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pQueuePriorities" VkDeviceQueueCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 3537 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceQueueCreateInfo where
        showsPrec d x
          = showString "VkDeviceQueueCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "queueFamilyIndex = " .
                                  showsPrec d (getField @"queueFamilyIndex" x) .
                                    showString ", " .
                                      showString "queueCount = " .
                                        showsPrec d (getField @"queueCount" x) .
                                          showString ", " .
                                            showString "pQueuePriorities = " .
                                              showsPrec d (getField @"pQueuePriorities" x) .
                                                showChar '}'

-- | > 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>
data VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoEXT# Addr#
                                                                                          ByteArray#

instance Eq VkDeviceQueueGlobalPriorityCreateInfoEXT where
        (VkDeviceQueueGlobalPriorityCreateInfoEXT# a _) ==
          x@(VkDeviceQueueGlobalPriorityCreateInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceQueueGlobalPriorityCreateInfoEXT where
        (VkDeviceQueueGlobalPriorityCreateInfoEXT# a _) `compare`
          x@(VkDeviceQueueGlobalPriorityCreateInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceQueueGlobalPriorityCreateInfoEXT where
        sizeOf ~_
          = (24)
{-# LINE 3587 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 3591 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        unsafeAddr (VkDeviceQueueGlobalPriorityCreateInfoEXT# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceQueueGlobalPriorityCreateInfoEXT# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceQueueGlobalPriorityCreateInfoEXT#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        type StructFields VkDeviceQueueGlobalPriorityCreateInfoEXT =
             '["sType", "pNext", "globalPriority"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceQueueGlobalPriorityCreateInfoEXT = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceQueueGlobalPriorityCreateInfoEXT = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceQueueGlobalPriorityCreateInfoEXT =
             '[VkDeviceQueueCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT where
        type FieldType "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT =
             VkStructureType
        type FieldOptional "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT =
             (0)
{-# LINE 3632 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 3641 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3648 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3652 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3659 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT where
        type FieldType "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT =
             Ptr Void
        type FieldOptional "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT =
             (8)
{-# LINE 3668 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 3677 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3684 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3688 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3695 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "globalPriority" VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        type FieldType "globalPriority"
               VkDeviceQueueGlobalPriorityCreateInfoEXT
             = VkQueueGlobalPriorityEXT
        type FieldOptional "globalPriority"
               VkDeviceQueueGlobalPriorityCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "globalPriority"
               VkDeviceQueueGlobalPriorityCreateInfoEXT
             =
             (16)
{-# LINE 3709 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "globalPriority"
               VkDeviceQueueGlobalPriorityCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 3719 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "globalPriority"
           VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3728 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 3732 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "globalPriority"
           VkDeviceQueueGlobalPriorityCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3740 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceQueueGlobalPriorityCreateInfoEXT where
        showsPrec d x
          = showString "VkDeviceQueueGlobalPriorityCreateInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "globalPriority = " .
                            showsPrec d (getField @"globalPriority" x) . showChar '}'

-- | > 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>
data VkDeviceQueueInfo2 = VkDeviceQueueInfo2# Addr# ByteArray#

instance Eq VkDeviceQueueInfo2 where
        (VkDeviceQueueInfo2# a _) == x@(VkDeviceQueueInfo2# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkDeviceQueueInfo2 where
        (VkDeviceQueueInfo2# a _) `compare` x@(VkDeviceQueueInfo2# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkDeviceQueueInfo2 where
        sizeOf ~_ = (32)
{-# LINE 3778 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 3781 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkDeviceQueueInfo2 where
        unsafeAddr (VkDeviceQueueInfo2# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkDeviceQueueInfo2# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkDeviceQueueInfo2# (plusAddr# (byteArrayContents# b) off) b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDeviceQueueInfo2 where
        type StructFields VkDeviceQueueInfo2 =
             '["sType", "pNext", "flags", "queueFamilyIndex", "queueIndex"] -- ' closing tick for hsc2hs
        type CUnionType VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDeviceQueueInfo2 = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "sType" VkDeviceQueueInfo2
         where
        type FieldType "sType" VkDeviceQueueInfo2 = VkStructureType
        type FieldOptional "sType" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkDeviceQueueInfo2 =
             (0)
{-# LINE 3815 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "sType" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (0)
{-# LINE 3822 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkDeviceQueueInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3829 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3833 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkDeviceQueueInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3839 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceQueueInfo2
         where
        type FieldType "pNext" VkDeviceQueueInfo2 = Ptr Void
        type FieldOptional "pNext" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkDeviceQueueInfo2 =
             (8)
{-# LINE 3846 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "pNext" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (8)
{-# LINE 3853 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkDeviceQueueInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3860 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3864 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkDeviceQueueInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3870 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-} HasField "flags" VkDeviceQueueInfo2
         where
        type FieldType "flags" VkDeviceQueueInfo2 =
             VkDeviceQueueCreateFlags
        type FieldOptional "flags" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkDeviceQueueInfo2 =
             (16)
{-# LINE 3878 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "flags" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (16)
{-# LINE 3885 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkDeviceQueueInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3892 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 3896 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkDeviceQueueInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3902 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "queueFamilyIndex" VkDeviceQueueInfo2 where
        type FieldType "queueFamilyIndex" VkDeviceQueueInfo2 = Word32
        type FieldOptional "queueFamilyIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type FieldOffset "queueFamilyIndex" VkDeviceQueueInfo2 =
             (20)
{-# LINE 3909 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "queueFamilyIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 3917 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "queueFamilyIndex" VkDeviceQueueInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 3924 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 3928 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "queueFamilyIndex" VkDeviceQueueInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 3934 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "queueIndex" VkDeviceQueueInfo2 where
        type FieldType "queueIndex" VkDeviceQueueInfo2 = Word32
        type FieldOptional "queueIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
        type FieldOffset "queueIndex" VkDeviceQueueInfo2 =
             (24)
{-# LINE 3941 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}
        type FieldIsArray "queueIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (24)
{-# LINE 3948 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "queueIndex" VkDeviceQueueInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 3955 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 3959 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "queueIndex" VkDeviceQueueInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 3965 "src-gen/Graphics/Vulkan/Types/Struct/Device.hsc" #-}

instance Show VkDeviceQueueInfo2 where
        showsPrec d x
          = showString "VkDeviceQueueInfo2 {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "queueFamilyIndex = " .
                                  showsPrec d (getField @"queueFamilyIndex" x) .
                                    showString ", " .
                                      showString "queueIndex = " .
                                        showsPrec d (getField @"queueIndex" x) . showChar '}'