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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Cmd
       (VkCmdProcessCommandsInfoNVX(..),
        VkCmdReserveSpaceForCommandsInfoNVX(..))
       where
import           Foreign.Storable                              (Storable (..))
import           GHC.Base                                      (Addr#,
                                                                ByteArray#,
                                                                byteArrayContents#,
                                                                plusAddr#)
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
import           Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
import           Graphics.Vulkan.Types.Handles                 (VkBuffer,
                                                                VkCommandBuffer,
                                                                VkIndirectCommandsLayoutNVX,
                                                                VkObjectTableNVX)
import           Graphics.Vulkan.Types.Struct.IndirectCommands (VkIndirectCommandsTokenNVX)
import           System.IO.Unsafe                              (unsafeDupablePerformIO)

-- | > typedef struct VkCmdProcessCommandsInfoNVX {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkObjectTableNVX                                         objectTable;
--   >     VkIndirectCommandsLayoutNVX                              indirectCommandsLayout;
--   >     uint32_t                                                 indirectCommandsTokenCount;
--   >     const VkIndirectCommandsTokenNVX*       pIndirectCommandsTokens;
--   >     uint32_t                                                 maxSequencesCount;
--   >     VkCommandBuffer                          targetCommandBuffer;
--   >     VkBuffer                                 sequencesCountBuffer;
--   >     VkDeviceSize                             sequencesCountOffset;
--   >     VkBuffer                                 sequencesIndexBuffer;
--   >     VkDeviceSize                             sequencesIndexOffset;
--   > } VkCmdProcessCommandsInfoNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCmdProcessCommandsInfoNVX VkCmdProcessCommandsInfoNVX registry at www.khronos.org>
data VkCmdProcessCommandsInfoNVX = VkCmdProcessCommandsInfoNVX# Addr#
                                                                ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkCmdProcessCommandsInfoNVX where
        type StructFields VkCmdProcessCommandsInfoNVX =
             '["sType", "pNext", "objectTable", "indirectCommandsLayout", -- ' closing tick for hsc2hs
               "indirectCommandsTokenCount", "pIndirectCommandsTokens",
               "maxSequencesCount", "targetCommandBuffer", "sequencesCountBuffer",
               "sequencesCountOffset", "sequencesIndexBuffer",
               "sequencesIndexOffset"]
        type CUnionType VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkCmdProcessCommandsInfoNVX = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "objectTable" VkCmdProcessCommandsInfoNVX where
        type FieldType "objectTable" VkCmdProcessCommandsInfoNVX =
             VkObjectTableNVX
        type FieldOptional "objectTable" VkCmdProcessCommandsInfoNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "objectTable" VkCmdProcessCommandsInfoNVX =
             (16)
{-# LINE 174 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "objectTable" VkCmdProcessCommandsInfoNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "objectTable" VkCmdProcessCommandsInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 190 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "objectTable" VkCmdProcessCommandsInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 200 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX where
        type FieldType "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
             = VkIndirectCommandsLayoutNVX
        type FieldOptional "indirectCommandsLayout"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "indirectCommandsLayout"
               VkCmdProcessCommandsInfoNVX
             =
             (24)
{-# LINE 212 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "indirectCommandsLayout"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 230 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 241 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "indirectCommandsTokenCount"
           VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 274 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "indirectCommandsTokenCount"
           VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 286 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
         where
        type FieldType "pIndirectCommandsTokens"
               VkCmdProcessCommandsInfoNVX
             = Ptr VkIndirectCommandsTokenNVX
        type FieldOptional "pIndirectCommandsTokens"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pIndirectCommandsTokens"
               VkCmdProcessCommandsInfoNVX
             =
             (40)
{-# LINE 300 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "pIndirectCommandsTokens"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 318 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 329 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
        type FieldType "maxSequencesCount" VkCmdProcessCommandsInfoNVX =
             Word32
        type FieldOptional "maxSequencesCount" VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxSequencesCount" VkCmdProcessCommandsInfoNVX =
             (48)
{-# LINE 338 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "maxSequencesCount" VkCmdProcessCommandsInfoNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 354 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 364 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX where
        type FieldType "targetCommandBuffer" VkCmdProcessCommandsInfoNVX =
             VkCommandBuffer
        type FieldOptional "targetCommandBuffer"
               VkCmdProcessCommandsInfoNVX
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
             =
             (56)
{-# LINE 375 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 392 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 403 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX where
        type FieldType "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX =
             VkBuffer
        type FieldOptional "sequencesCountBuffer"
               VkCmdProcessCommandsInfoNVX
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
             =
             (64)
{-# LINE 414 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "sequencesCountBuffer"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 432 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 443 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX where
        type FieldType "sequencesCountOffset" VkCmdProcessCommandsInfoNVX =
             VkDeviceSize
        type FieldOptional "sequencesCountOffset"
               VkCmdProcessCommandsInfoNVX
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
             =
             (72)
{-# LINE 454 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "sequencesCountOffset"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (72)
{-# LINE 464 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (72))
{-# LINE 472 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (72)
{-# LINE 476 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (72)
{-# LINE 483 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX where
        type FieldType "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX =
             VkBuffer
        type FieldOptional "sequencesIndexBuffer"
               VkCmdProcessCommandsInfoNVX
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
             =
             (80)
{-# LINE 494 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "sequencesIndexBuffer"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (80)
{-# LINE 504 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (80))
{-# LINE 512 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (80)
{-# LINE 516 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (80)
{-# LINE 523 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX where
        type FieldType "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX =
             VkDeviceSize
        type FieldOptional "sequencesIndexOffset"
               VkCmdProcessCommandsInfoNVX
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
             =
             (88)
{-# LINE 534 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "sequencesIndexOffset"
               VkCmdProcessCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (88)
{-# LINE 544 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (88))
{-# LINE 552 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (88)
{-# LINE 556 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (88)
{-# LINE 563 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance Show VkCmdProcessCommandsInfoNVX where
        showsPrec d x
          = showString "VkCmdProcessCommandsInfoNVX {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "objectTable = " .
                            showsPrec d (getField @"objectTable" x) .
                              showString ", " .
                                showString "indirectCommandsLayout = " .
                                  showsPrec d (getField @"indirectCommandsLayout" x) .
                                    showString ", " .
                                      showString "indirectCommandsTokenCount = " .
                                        showsPrec d (getField @"indirectCommandsTokenCount" x) .
                                          showString ", " .
                                            showString "pIndirectCommandsTokens = " .
                                              showsPrec d (getField @"pIndirectCommandsTokens" x) .
                                                showString ", " .
                                                  showString "maxSequencesCount = " .
                                                    showsPrec d (getField @"maxSequencesCount" x) .
                                                      showString ", " .
                                                        showString "targetCommandBuffer = " .
                                                          showsPrec d
                                                            (getField @"targetCommandBuffer" x)
                                                            .
                                                            showString ", " .
                                                              showString "sequencesCountBuffer = " .
                                                                showsPrec d
                                                                  (getField @"sequencesCountBuffer"
                                                                     x)
                                                                  .
                                                                  showString ", " .
                                                                    showString
                                                                      "sequencesCountOffset = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"sequencesCountOffset"
                                                                           x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "sequencesIndexBuffer = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"sequencesIndexBuffer"
                                                                                 x)
                                                                              .
                                                                              showString ", " .
                                                                                showString
                                                                                  "sequencesIndexOffset = "
                                                                                  .
                                                                                  showsPrec d
                                                                                    (getField
                                                                                       @"sequencesIndexOffset"
                                                                                       x)
                                                                                    . showChar '}'

-- | > typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkObjectTableNVX                                         objectTable;
--   >     VkIndirectCommandsLayoutNVX                              indirectCommandsLayout;
--   >     uint32_t                                                 maxSequencesCount;
--   > } VkCmdReserveSpaceForCommandsInfoNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCmdReserveSpaceForCommandsInfoNVX VkCmdReserveSpaceForCommandsInfoNVX registry at www.khronos.org>
data VkCmdReserveSpaceForCommandsInfoNVX = VkCmdReserveSpaceForCommandsInfoNVX# Addr#
                                                                                ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkCmdReserveSpaceForCommandsInfoNVX where
        type StructFields VkCmdReserveSpaceForCommandsInfoNVX =
             '["sType", "pNext", "objectTable", "indirectCommandsLayout", -- ' closing tick for hsc2hs
               "maxSequencesCount"]
        type CUnionType VkCmdReserveSpaceForCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkCmdReserveSpaceForCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkCmdReserveSpaceForCommandsInfoNVX = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX where
        type FieldType "objectTable" VkCmdReserveSpaceForCommandsInfoNVX =
             VkObjectTableNVX
        type FieldOptional "objectTable"
               VkCmdReserveSpaceForCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
             =
             (16)
{-# LINE 770 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 787 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 798 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "indirectCommandsLayout"
           VkCmdReserveSpaceForCommandsInfoNVX
         where
        type FieldType "indirectCommandsLayout"
               VkCmdReserveSpaceForCommandsInfoNVX
             = VkIndirectCommandsLayoutNVX
        type FieldOptional "indirectCommandsLayout"
               VkCmdReserveSpaceForCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "indirectCommandsLayout"
               VkCmdReserveSpaceForCommandsInfoNVX
             =
             (24)
{-# LINE 813 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}
        type FieldIsArray "indirectCommandsLayout"
               VkCmdReserveSpaceForCommandsInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "indirectCommandsLayout"
           VkCmdReserveSpaceForCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 832 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "indirectCommandsLayout"
           VkCmdReserveSpaceForCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 844 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxSequencesCount"
           VkCmdReserveSpaceForCommandsInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 877 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxSequencesCount"
           VkCmdReserveSpaceForCommandsInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 889 "src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc" #-}

instance Show VkCmdReserveSpaceForCommandsInfoNVX where
        showsPrec d x
          = showString "VkCmdReserveSpaceForCommandsInfoNVX {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "objectTable = " .
                            showsPrec d (getField @"objectTable" x) .
                              showString ", " .
                                showString "indirectCommandsLayout = " .
                                  showsPrec d (getField @"indirectCommandsLayout" x) .
                                    showString ", " .
                                      showString "maxSequencesCount = " .
                                        showsPrec d (getField @"maxSequencesCount" x) . showChar '}'