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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Descriptor
       (VkDescriptorBufferInfo(..), VkDescriptorImageInfo(..),
        VkDescriptorPoolCreateInfo(..), VkDescriptorPoolSize(..),
        VkDescriptorSetAllocateInfo(..), VkDescriptorSetLayoutBinding(..),
        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(..),
        VkDescriptorSetLayoutCreateInfo(..),
        VkDescriptorSetLayoutSupport(..), VkDescriptorSetLayoutSupportKHR,
        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(..),
        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(..),
        VkDescriptorUpdateTemplateCreateInfo(..),
        VkDescriptorUpdateTemplateCreateInfoKHR,
        VkDescriptorUpdateTemplateEntry(..),
        VkDescriptorUpdateTemplateEntryKHR)
       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          (VkBool32,
                                                           VkDeviceSize)
import           Graphics.Vulkan.Types.Bitmasks           (VkDescriptorUpdateTemplateCreateFlags)
import           Graphics.Vulkan.Types.Enum.Descriptor    (VkDescriptorBindingFlagsEXT,
                                                           VkDescriptorPoolCreateFlags,
                                                           VkDescriptorSetLayoutCreateFlags,
                                                           VkDescriptorType,
                                                           VkDescriptorUpdateTemplateType)
import           Graphics.Vulkan.Types.Enum.Image         (VkImageLayout)
import           Graphics.Vulkan.Types.Enum.Pipeline      (VkPipelineBindPoint)
import           Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
import           Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import           Graphics.Vulkan.Types.Handles            (VkBuffer,
                                                           VkDescriptorPool,
                                                           VkDescriptorSetLayout,
                                                           VkImageView,
                                                           VkPipelineLayout,
                                                           VkSampler)
import           System.IO.Unsafe                         (unsafeDupablePerformIO)

-- | > typedef struct VkDescriptorBufferInfo {
--   >     VkBuffer               buffer;
--   >     VkDeviceSize           offset;
--   >     VkDeviceSize           range;
--   > } VkDescriptorBufferInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorBufferInfo VkDescriptorBufferInfo registry at www.khronos.org>
data VkDescriptorBufferInfo = VkDescriptorBufferInfo# Addr#
                                                      ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorBufferInfo where
        type StructFields VkDescriptorBufferInfo =
             '["buffer", "offset", "range"] -- ' closing tick for hsc2hs
        type CUnionType VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorBufferInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "buffer" VkDescriptorBufferInfo where
        type FieldType "buffer" VkDescriptorBufferInfo = VkBuffer
        type FieldOptional "buffer" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "buffer" VkDescriptorBufferInfo =
             (0)
{-# LINE 111 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "buffer" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "buffer" VkDescriptorBufferInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 125 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "buffer" VkDescriptorBufferInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 135 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "offset" VkDescriptorBufferInfo where
        type FieldType "offset" VkDescriptorBufferInfo = VkDeviceSize
        type FieldOptional "offset" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "offset" VkDescriptorBufferInfo =
             (8)
{-# LINE 142 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "offset" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "offset" VkDescriptorBufferInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 156 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "offset" VkDescriptorBufferInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 166 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "range" VkDescriptorBufferInfo where
        type FieldType "range" VkDescriptorBufferInfo = VkDeviceSize
        type FieldOptional "range" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "range" VkDescriptorBufferInfo =
             (16)
{-# LINE 173 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "range" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "range" VkDescriptorBufferInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 187 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "range" VkDescriptorBufferInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 197 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorBufferInfo where
        showsPrec d x
          = showString "VkDescriptorBufferInfo {" .
              showString "buffer = " .
                showsPrec d (getField @"buffer" x) .
                  showString ", " .
                    showString "offset = " .
                      showsPrec d (getField @"offset" x) .
                        showString ", " .
                          showString "range = " .
                            showsPrec d (getField @"range" x) . showChar '}'

-- | > typedef struct VkDescriptorImageInfo {
--   >     VkSampler       sampler;
--   >     VkImageView     imageView;
--   >     VkImageLayout   imageLayout;
--   > } VkDescriptorImageInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorImageInfo VkDescriptorImageInfo registry at www.khronos.org>
data VkDescriptorImageInfo = VkDescriptorImageInfo# Addr#
                                                    ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorImageInfo where
        type StructFields VkDescriptorImageInfo =
             '["sampler", "imageView", "imageLayout"] -- ' closing tick for hsc2hs
        type CUnionType VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorImageInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sampler" VkDescriptorImageInfo where
        type FieldType "sampler" VkDescriptorImageInfo = VkSampler
        type FieldOptional "sampler" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sampler" VkDescriptorImageInfo =
             (0)
{-# LINE 271 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "sampler" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "sampler" VkDescriptorImageInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 285 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "sampler" VkDescriptorImageInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 295 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "imageView" VkDescriptorImageInfo where
        type FieldType "imageView" VkDescriptorImageInfo = VkImageView
        type FieldOptional "imageView" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageView" VkDescriptorImageInfo =
             (8)
{-# LINE 302 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "imageView" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageView" VkDescriptorImageInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 317 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageView" VkDescriptorImageInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 327 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "imageLayout" VkDescriptorImageInfo where
        type FieldType "imageLayout" VkDescriptorImageInfo = VkImageLayout
        type FieldOptional "imageLayout" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageLayout" VkDescriptorImageInfo =
             (16)
{-# LINE 334 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "imageLayout" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageLayout" VkDescriptorImageInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 349 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageLayout" VkDescriptorImageInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 359 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorImageInfo where
        showsPrec d x
          = showString "VkDescriptorImageInfo {" .
              showString "sampler = " .
                showsPrec d (getField @"sampler" x) .
                  showString ", " .
                    showString "imageView = " .
                      showsPrec d (getField @"imageView" x) .
                        showString ", " .
                          showString "imageLayout = " .
                            showsPrec d (getField @"imageLayout" x) . showChar '}'

-- | > typedef struct VkDescriptorPoolCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkDescriptorPoolCreateFlags  flags;
--   >     uint32_t               maxSets;
--   >     uint32_t               poolSizeCount;
--   >     const VkDescriptorPoolSize* pPoolSizes;
--   > } VkDescriptorPoolCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorPoolCreateInfo VkDescriptorPoolCreateInfo registry at www.khronos.org>
data VkDescriptorPoolCreateInfo = VkDescriptorPoolCreateInfo# Addr#
                                                              ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorPoolCreateInfo where
        type StructFields VkDescriptorPoolCreateInfo =
             '["sType", "pNext", "flags", "maxSets", "poolSizeCount", -- ' closing tick for hsc2hs
               "pPoolSizes"]
        type CUnionType VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorPoolCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxSets" VkDescriptorPoolCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 552 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxSets" VkDescriptorPoolCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 562 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "poolSizeCount" VkDescriptorPoolCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 586 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "poolSizeCount" VkDescriptorPoolCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 596 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pPoolSizes" VkDescriptorPoolCreateInfo where
        type FieldType "pPoolSizes" VkDescriptorPoolCreateInfo =
             Ptr VkDescriptorPoolSize
        type FieldOptional "pPoolSizes" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pPoolSizes" VkDescriptorPoolCreateInfo =
             (32)
{-# LINE 604 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pPoolSizes" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pPoolSizes" VkDescriptorPoolCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 619 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pPoolSizes" VkDescriptorPoolCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 629 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorPoolCreateInfo where
        showsPrec d x
          = showString "VkDescriptorPoolCreateInfo {" .
              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 "maxSets = " .
                                  showsPrec d (getField @"maxSets" x) .
                                    showString ", " .
                                      showString "poolSizeCount = " .
                                        showsPrec d (getField @"poolSizeCount" x) .
                                          showString ", " .
                                            showString "pPoolSizes = " .
                                              showsPrec d (getField @"pPoolSizes" x) . showChar '}'

-- | > typedef struct VkDescriptorPoolSize {
--   >     VkDescriptorType       type;
--   >     uint32_t               descriptorCount;
--   > } VkDescriptorPoolSize;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorPoolSize VkDescriptorPoolSize registry at www.khronos.org>
data VkDescriptorPoolSize = VkDescriptorPoolSize# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkDescriptorPoolSize where
        sizeOf ~_ = (8)
{-# LINE 673 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (4)
{-# LINE 676 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorPoolSize where
        type StructFields VkDescriptorPoolSize =
             '["type", "descriptorCount"] -- ' closing tick for hsc2hs
        type CUnionType VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorPoolSize = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "type" VkDescriptorPoolSize
         where
        type FieldType "type" VkDescriptorPoolSize = VkDescriptorType
        type FieldOptional "type" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkDescriptorPoolSize =
             (0)
{-# LINE 710 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "type" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "type" VkDescriptorPoolSize where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 724 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkDescriptorPoolSize where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 734 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorCount" VkDescriptorPoolSize where
        type FieldType "descriptorCount" VkDescriptorPoolSize = Word32
        type FieldOptional "descriptorCount" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
        type FieldOffset "descriptorCount" VkDescriptorPoolSize =
             (4)
{-# LINE 741 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorCount" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 749 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "descriptorCount" VkDescriptorPoolSize where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 756 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 760 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorCount" VkDescriptorPoolSize where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 766 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorPoolSize where
        showsPrec d x
          = showString "VkDescriptorPoolSize {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "descriptorCount = " .
                      showsPrec d (getField @"descriptorCount" x) . showChar '}'

-- | > typedef struct VkDescriptorSetAllocateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkDescriptorPool       descriptorPool;
--   >     uint32_t               descriptorSetCount;
--   >     const VkDescriptorSetLayout* pSetLayouts;
--   > } VkDescriptorSetAllocateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetAllocateInfo VkDescriptorSetAllocateInfo registry at www.khronos.org>
data VkDescriptorSetAllocateInfo = VkDescriptorSetAllocateInfo# Addr#
                                                                ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorSetAllocateInfo where
        type StructFields VkDescriptorSetAllocateInfo =
             '["sType", "pNext", "descriptorPool", "descriptorSetCount", -- ' closing tick for hsc2hs
               "pSetLayouts"]
        type CUnionType VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorSetAllocateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "descriptorPool" VkDescriptorSetAllocateInfo where
        type FieldType "descriptorPool" VkDescriptorSetAllocateInfo =
             VkDescriptorPool
        type FieldOptional "descriptorPool" VkDescriptorSetAllocateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "descriptorPool" VkDescriptorSetAllocateInfo =
             (16)
{-# LINE 910 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorPool" VkDescriptorSetAllocateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorPool" VkDescriptorSetAllocateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 926 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorPool" VkDescriptorSetAllocateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 936 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorSetCount" VkDescriptorSetAllocateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 961 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorSetCount" VkDescriptorSetAllocateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 972 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pSetLayouts" VkDescriptorSetAllocateInfo where
        type FieldType "pSetLayouts" VkDescriptorSetAllocateInfo =
             Ptr VkDescriptorSetLayout
        type FieldOptional "pSetLayouts" VkDescriptorSetAllocateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pSetLayouts" VkDescriptorSetAllocateInfo =
             (32)
{-# LINE 981 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pSetLayouts" VkDescriptorSetAllocateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pSetLayouts" VkDescriptorSetAllocateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 997 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pSetLayouts" VkDescriptorSetAllocateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1007 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorSetAllocateInfo where
        showsPrec d x
          = showString "VkDescriptorSetAllocateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "descriptorPool = " .
                            showsPrec d (getField @"descriptorPool" x) .
                              showString ", " .
                                showString "descriptorSetCount = " .
                                  showsPrec d (getField @"descriptorSetCount" x) .
                                    showString ", " .
                                      showString "pSetLayouts = " .
                                        showsPrec d (getField @"pSetLayouts" x) . showChar '}'

-- | > typedef struct VkDescriptorSetLayoutBinding {
--   >     uint32_t               binding;
--   >     VkDescriptorType       descriptorType;
--   >     uint32_t descriptorCount;
--   >     VkShaderStageFlags     stageFlags;
--   >     const VkSampler*       pImmutableSamplers;
--   > } VkDescriptorSetLayoutBinding;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutBinding VkDescriptorSetLayoutBinding registry at www.khronos.org>
data VkDescriptorSetLayoutBinding = VkDescriptorSetLayoutBinding# Addr#
                                                                  ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorSetLayoutBinding where
        type StructFields VkDescriptorSetLayoutBinding =
             '["binding", "descriptorType", "descriptorCount", "stageFlags", -- ' closing tick for hsc2hs
               "pImmutableSamplers"]
        type CUnionType VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorSetLayoutBinding = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "binding" VkDescriptorSetLayoutBinding where
        type FieldType "binding" VkDescriptorSetLayoutBinding = Word32
        type FieldOptional "binding" VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
        type FieldOffset "binding" VkDescriptorSetLayoutBinding =
             (0)
{-# LINE 1094 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "binding" VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "binding" VkDescriptorSetLayoutBinding where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1109 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "binding" VkDescriptorSetLayoutBinding where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1119 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorType" VkDescriptorSetLayoutBinding where
        type FieldType "descriptorType" VkDescriptorSetLayoutBinding =
             VkDescriptorType
        type FieldOptional "descriptorType" VkDescriptorSetLayoutBinding =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "descriptorType" VkDescriptorSetLayoutBinding =
             (4)
{-# LINE 1128 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorType" VkDescriptorSetLayoutBinding =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 1137 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "descriptorType" VkDescriptorSetLayoutBinding where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1144 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 1148 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorType" VkDescriptorSetLayoutBinding where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1154 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorCount" VkDescriptorSetLayoutBinding where
        type FieldType "descriptorCount" VkDescriptorSetLayoutBinding =
             Word32
        type FieldOptional "descriptorCount" VkDescriptorSetLayoutBinding =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "descriptorCount" VkDescriptorSetLayoutBinding =
             (8)
{-# LINE 1163 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorCount" VkDescriptorSetLayoutBinding =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorCount" VkDescriptorSetLayoutBinding where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1179 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorCount" VkDescriptorSetLayoutBinding where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1189 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "stageFlags" VkDescriptorSetLayoutBinding where
        type FieldType "stageFlags" VkDescriptorSetLayoutBinding =
             VkShaderStageFlags
        type FieldOptional "stageFlags" VkDescriptorSetLayoutBinding =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "stageFlags" VkDescriptorSetLayoutBinding =
             (12)
{-# LINE 1198 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "stageFlags" VkDescriptorSetLayoutBinding =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (12)
{-# LINE 1207 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "stageFlags" VkDescriptorSetLayoutBinding where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 1214 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (12)
{-# LINE 1218 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "stageFlags" VkDescriptorSetLayoutBinding where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 1224 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pImmutableSamplers" VkDescriptorSetLayoutBinding where
        type FieldType "pImmutableSamplers" VkDescriptorSetLayoutBinding =
             Ptr VkSampler
        type FieldOptional "pImmutableSamplers"
               VkDescriptorSetLayoutBinding
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pImmutableSamplers" VkDescriptorSetLayoutBinding
             =
             (16)
{-# LINE 1235 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pImmutableSamplers" VkDescriptorSetLayoutBinding
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "pImmutableSamplers" VkDescriptorSetLayoutBinding
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1252 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pImmutableSamplers" VkDescriptorSetLayoutBinding
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1263 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorSetLayoutBinding where
        showsPrec d x
          = showString "VkDescriptorSetLayoutBinding {" .
              showString "binding = " .
                showsPrec d (getField @"binding" x) .
                  showString ", " .
                    showString "descriptorType = " .
                      showsPrec d (getField @"descriptorType" x) .
                        showString ", " .
                          showString "descriptorCount = " .
                            showsPrec d (getField @"descriptorCount" x) .
                              showString ", " .
                                showString "stageFlags = " .
                                  showsPrec d (getField @"stageFlags" x) .
                                    showString ", " .
                                      showString "pImmutableSamplers = " .
                                        showsPrec d (getField @"pImmutableSamplers" x) .
                                          showChar '}'

-- | > typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     uint32_t               bindingCount;
--   >     const VkDescriptorBindingFlagsEXT* pBindingFlags;
--   > } VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT VkDescriptorSetLayoutBindingFlagsCreateInfoEXT registry at www.khronos.org>
data VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfoEXT# Addr#
                                                                                                      ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
         where
        type StructFields VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
             '["sType", "pNext", "bindingCount", "pBindingFlags"] -- ' closing tick for hsc2hs
        type CUnionType VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
             '[VkDescriptorSetLayoutCreateInfo] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "bindingCount"
           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1476 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "bindingCount"
           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1488 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pBindingFlags"
           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
         where
        type FieldType "pBindingFlags"
               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
             = Ptr VkDescriptorBindingFlagsEXT
        type FieldOptional "pBindingFlags"
               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pBindingFlags"
               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
             =
             (24)
{-# LINE 1503 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pBindingFlags"
               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pBindingFlags"
           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1522 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pBindingFlags"
           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1534 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

-- | > typedef struct VkDescriptorSetLayoutCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkDescriptorSetLayoutCreateFlags    flags;
--   >     uint32_t               bindingCount;
--   >     const VkDescriptorSetLayoutBinding* pBindings;
--   > } VkDescriptorSetLayoutCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutCreateInfo VkDescriptorSetLayoutCreateInfo registry at www.khronos.org>
data VkDescriptorSetLayoutCreateInfo = VkDescriptorSetLayoutCreateInfo# Addr#
                                                                        ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorSetLayoutCreateInfo where
        type StructFields VkDescriptorSetLayoutCreateInfo =
             '["sType", "pNext", "flags", "bindingCount", "pBindings"] -- ' closing tick for hsc2hs
        type CUnionType VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorSetLayoutCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "bindingCount" VkDescriptorSetLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1733 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "bindingCount" VkDescriptorSetLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1743 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pBindings" VkDescriptorSetLayoutCreateInfo where
        type FieldType "pBindings" VkDescriptorSetLayoutCreateInfo =
             Ptr VkDescriptorSetLayoutBinding
        type FieldOptional "pBindings" VkDescriptorSetLayoutCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pBindings" VkDescriptorSetLayoutCreateInfo =
             (24)
{-# LINE 1752 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pBindings" VkDescriptorSetLayoutCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pBindings" VkDescriptorSetLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1768 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pBindings" VkDescriptorSetLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1778 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorSetLayoutCreateInfo where
        showsPrec d x
          = showString "VkDescriptorSetLayoutCreateInfo {" .
              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 "bindingCount = " .
                                  showsPrec d (getField @"bindingCount" x) .
                                    showString ", " .
                                      showString "pBindings = " .
                                        showsPrec d (getField @"pBindings" x) . showChar '}'

-- | > typedef struct VkDescriptorSetLayoutSupport {
--   >     VkStructureType sType;
--   >     void*            pNext;
--   >     VkBool32         supported;
--   > } VkDescriptorSetLayoutSupport;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupport registry at www.khronos.org>
data VkDescriptorSetLayoutSupport = VkDescriptorSetLayoutSupport# Addr#
                                                                  ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "supported" VkDescriptorSetLayoutSupport where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1943 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supported" VkDescriptorSetLayoutSupport where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1953 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

-- | Alias for `VkDescriptorSetLayoutSupport`
type VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
         where
        type StructFields
               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
             = '["sType", "pNext", "descriptorSetCount", "pDescriptorCounts"] -- ' closing tick for hsc2hs
        type CUnionType
               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly
               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type StructExtends
               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
             = '[VkDescriptorSetAllocateInfo] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorSetCount"
           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2174 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorSetCount"
           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2186 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pDescriptorCounts"
           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2220 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pDescriptorCounts"
           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2232 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

-- | > typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
--   >     VkStructureType sType;
--   >     void*            pNext;
--   >     uint32_t         maxVariableDescriptorCount;
--   > } VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT VkDescriptorSetVariableDescriptorCountLayoutSupportEXT registry at www.khronos.org>
data VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupportEXT# Addr#
                                                                                                                      ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
         where
        type StructFields
               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
             = '["sType", "pNext", "maxVariableDescriptorCount"] -- ' closing tick for hsc2hs
        type CUnionType
               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
             = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly
               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
             = 'True -- ' closing tick for hsc2hs
        type StructExtends
               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
             = '[VkDescriptorSetLayoutSupport] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxVariableDescriptorCount"
           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2455 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxVariableDescriptorCount"
           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2467 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

-- | > typedef struct VkDescriptorUpdateTemplateCreateInfo {
--   >     VkStructureType sType;
--   >     void*                                   pNext;
--   >     VkDescriptorUpdateTemplateCreateFlags    flags;
--   >     uint32_t                 descriptorUpdateEntryCount;
--   >     const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;
--   >     VkDescriptorUpdateTemplateType templateType;
--   >     VkDescriptorSetLayout descriptorSetLayout;
--   >     VkPipelineBindPoint pipelineBindPoint;
--   >     VkPipelineLayoutpipelineLayout;
--   >     uint32_t set;
--   > } VkDescriptorUpdateTemplateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfo registry at www.khronos.org>
data VkDescriptorUpdateTemplateCreateInfo = VkDescriptorUpdateTemplateCreateInfo# Addr#
                                                                                  ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorUpdateTemplateCreateInfo where
        type StructFields VkDescriptorUpdateTemplateCreateInfo =
             '["sType", "pNext", "flags", "descriptorUpdateEntryCount", -- ' closing tick for hsc2hs
               "pDescriptorUpdateEntries", "templateType", "descriptorSetLayout",
               "pipelineBindPoint", "pipelineLayout", "set"]
        type CUnionType VkDescriptorUpdateTemplateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorUpdateTemplateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorUpdateTemplateCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorUpdateEntryCount"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 2694 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorUpdateEntryCount"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 2706 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDescriptorUpdateEntries"
           VkDescriptorUpdateTemplateCreateInfo
         where
        type FieldType "pDescriptorUpdateEntries"
               VkDescriptorUpdateTemplateCreateInfo
             = Ptr VkDescriptorUpdateTemplateEntry
        type FieldOptional "pDescriptorUpdateEntries"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pDescriptorUpdateEntries"
               VkDescriptorUpdateTemplateCreateInfo
             =
             (24)
{-# LINE 2721 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pDescriptorUpdateEntries"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pDescriptorUpdateEntries"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2740 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pDescriptorUpdateEntries"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2752 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "templateType" VkDescriptorUpdateTemplateCreateInfo where
        type FieldType "templateType" VkDescriptorUpdateTemplateCreateInfo
             = VkDescriptorUpdateTemplateType
        type FieldOptional "templateType"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "templateType"
               VkDescriptorUpdateTemplateCreateInfo
             =
             (32)
{-# LINE 2764 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "templateType"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "templateType" VkDescriptorUpdateTemplateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2782 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "templateType" VkDescriptorUpdateTemplateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2793 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorSetLayout" VkDescriptorUpdateTemplateCreateInfo
         where
        type FieldType "descriptorSetLayout"
               VkDescriptorUpdateTemplateCreateInfo
             = VkDescriptorSetLayout
        type FieldOptional "descriptorSetLayout"
               VkDescriptorUpdateTemplateCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "descriptorSetLayout"
               VkDescriptorUpdateTemplateCreateInfo
             =
             (40)
{-# LINE 2807 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorSetLayout"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorSetLayout"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 2826 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorSetLayout"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 2838 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pipelineBindPoint" VkDescriptorUpdateTemplateCreateInfo
         where
        type FieldType "pipelineBindPoint"
               VkDescriptorUpdateTemplateCreateInfo
             = VkPipelineBindPoint
        type FieldOptional "pipelineBindPoint"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pipelineBindPoint"
               VkDescriptorUpdateTemplateCreateInfo
             =
             (48)
{-# LINE 2852 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pipelineBindPoint"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pipelineBindPoint"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 2871 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pipelineBindPoint"
           VkDescriptorUpdateTemplateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 2883 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfo
         where
        type FieldType "pipelineLayout"
               VkDescriptorUpdateTemplateCreateInfo
             = VkPipelineLayout
        type FieldOptional "pipelineLayout"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pipelineLayout"
               VkDescriptorUpdateTemplateCreateInfo
             =
             (56)
{-# LINE 2897 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "pipelineLayout"
               VkDescriptorUpdateTemplateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 2915 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 2926 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "set" VkDescriptorUpdateTemplateCreateInfo where
        type FieldType "set" VkDescriptorUpdateTemplateCreateInfo = Word32
        type FieldOptional "set" VkDescriptorUpdateTemplateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "set" VkDescriptorUpdateTemplateCreateInfo =
             (64)
{-# LINE 2934 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "set" VkDescriptorUpdateTemplateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "set" VkDescriptorUpdateTemplateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 2950 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "set" VkDescriptorUpdateTemplateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 2960 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorUpdateTemplateCreateInfo where
        showsPrec d x
          = showString "VkDescriptorUpdateTemplateCreateInfo {" .
              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 "descriptorUpdateEntryCount = " .
                                  showsPrec d (getField @"descriptorUpdateEntryCount" x) .
                                    showString ", " .
                                      showString "pDescriptorUpdateEntries = " .
                                        showsPrec d (getField @"pDescriptorUpdateEntries" x) .
                                          showString ", " .
                                            showString "templateType = " .
                                              showsPrec d (getField @"templateType" x) .
                                                showString ", " .
                                                  showString "descriptorSetLayout = " .
                                                    showsPrec d (getField @"descriptorSetLayout" x)
                                                      .
                                                      showString ", " .
                                                        showString "pipelineBindPoint = " .
                                                          showsPrec d
                                                            (getField @"pipelineBindPoint" x)
                                                            .
                                                            showString ", " .
                                                              showString "pipelineLayout = " .
                                                                showsPrec d
                                                                  (getField @"pipelineLayout" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString "set = " .
                                                                      showsPrec d
                                                                        (getField @"set" x)
                                                                        . showChar '}'

-- | Alias for `VkDescriptorUpdateTemplateCreateInfo`
type VkDescriptorUpdateTemplateCreateInfoKHR =
     VkDescriptorUpdateTemplateCreateInfo

-- | > typedef struct VkDescriptorUpdateTemplateEntry {
--   >     uint32_t                         dstBinding;
--   >     uint32_t                         dstArrayElement;
--   >     uint32_t                         descriptorCount;
--   >     VkDescriptorType                 descriptorType;
--   >     size_t                           offset;
--   >     size_t                           stride;
--   > } VkDescriptorUpdateTemplateEntry;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntry registry at www.khronos.org>
data VkDescriptorUpdateTemplateEntry = VkDescriptorUpdateTemplateEntry# Addr#
                                                                        ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDescriptorUpdateTemplateEntry where
        type StructFields VkDescriptorUpdateTemplateEntry =
             '["dstBinding", "dstArrayElement", "descriptorCount", -- ' closing tick for hsc2hs
               "descriptorType", "offset", "stride"]
        type CUnionType VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDescriptorUpdateTemplateEntry = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "dstBinding" VkDescriptorUpdateTemplateEntry where
        type FieldType "dstBinding" VkDescriptorUpdateTemplateEntry =
             Word32
        type FieldOptional "dstBinding" VkDescriptorUpdateTemplateEntry =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "dstBinding" VkDescriptorUpdateTemplateEntry =
             (0)
{-# LINE 3076 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "dstBinding" VkDescriptorUpdateTemplateEntry =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstBinding" VkDescriptorUpdateTemplateEntry where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3092 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstBinding" VkDescriptorUpdateTemplateEntry where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3102 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstArrayElement" VkDescriptorUpdateTemplateEntry where
        type FieldType "dstArrayElement" VkDescriptorUpdateTemplateEntry =
             Word32
        type FieldOptional "dstArrayElement"
               VkDescriptorUpdateTemplateEntry
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstArrayElement" VkDescriptorUpdateTemplateEntry
             =
             (4)
{-# LINE 3113 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "dstArrayElement" VkDescriptorUpdateTemplateEntry
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 3122 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "dstArrayElement" VkDescriptorUpdateTemplateEntry
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 3130 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 3134 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "dstArrayElement" VkDescriptorUpdateTemplateEntry
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 3141 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorCount" VkDescriptorUpdateTemplateEntry where
        type FieldType "descriptorCount" VkDescriptorUpdateTemplateEntry =
             Word32
        type FieldOptional "descriptorCount"
               VkDescriptorUpdateTemplateEntry
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "descriptorCount" VkDescriptorUpdateTemplateEntry
             =
             (8)
{-# LINE 3152 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorCount" VkDescriptorUpdateTemplateEntry
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "descriptorCount" VkDescriptorUpdateTemplateEntry
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3169 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorCount" VkDescriptorUpdateTemplateEntry
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3180 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorType" VkDescriptorUpdateTemplateEntry where
        type FieldType "descriptorType" VkDescriptorUpdateTemplateEntry =
             VkDescriptorType
        type FieldOptional "descriptorType" VkDescriptorUpdateTemplateEntry
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "descriptorType" VkDescriptorUpdateTemplateEntry =
             (12)
{-# LINE 3189 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "descriptorType" VkDescriptorUpdateTemplateEntry
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (12)
{-# LINE 3198 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "descriptorType" VkDescriptorUpdateTemplateEntry where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 3205 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (12)
{-# LINE 3209 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorType" VkDescriptorUpdateTemplateEntry
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 3216 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "offset" VkDescriptorUpdateTemplateEntry where
        type FieldType "offset" VkDescriptorUpdateTemplateEntry = CSize
        type FieldOptional "offset" VkDescriptorUpdateTemplateEntry =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "offset" VkDescriptorUpdateTemplateEntry =
             (16)
{-# LINE 3224 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "offset" VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "offset" VkDescriptorUpdateTemplateEntry where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3239 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "offset" VkDescriptorUpdateTemplateEntry where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3249 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "stride" VkDescriptorUpdateTemplateEntry where
        type FieldType "stride" VkDescriptorUpdateTemplateEntry = CSize
        type FieldOptional "stride" VkDescriptorUpdateTemplateEntry =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "stride" VkDescriptorUpdateTemplateEntry =
             (24)
{-# LINE 3257 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}
        type FieldIsArray "stride" VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "stride" VkDescriptorUpdateTemplateEntry where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 3272 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "stride" VkDescriptorUpdateTemplateEntry where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 3282 "src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc" #-}

instance Show VkDescriptorUpdateTemplateEntry where
        showsPrec d x
          = showString "VkDescriptorUpdateTemplateEntry {" .
              showString "dstBinding = " .
                showsPrec d (getField @"dstBinding" x) .
                  showString ", " .
                    showString "dstArrayElement = " .
                      showsPrec d (getField @"dstArrayElement" x) .
                        showString ", " .
                          showString "descriptorCount = " .
                            showsPrec d (getField @"descriptorCount" x) .
                              showString ", " .
                                showString "descriptorType = " .
                                  showsPrec d (getField @"descriptorType" x) .
                                    showString ", " .
                                      showString "offset = " .
                                        showsPrec d (getField @"offset" x) .
                                          showString ", " .
                                            showString "stride = " .
                                              showsPrec d (getField @"stride" x) . showChar '}'

-- | Alias for `VkDescriptorUpdateTemplateEntry`
type VkDescriptorUpdateTemplateEntryKHR =
     VkDescriptorUpdateTemplateEntry