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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Buffer
       (VkBufferCopy(..), VkBufferCreateInfo(..), VkBufferImageCopy(..),
        VkBufferMemoryBarrier(..), VkBufferMemoryRequirementsInfo2(..),
        VkBufferMemoryRequirementsInfo2KHR, VkBufferViewCreateInfo(..))
       where
import           Foreign.Storable                         (Storable (..))
import           GHC.Base                                 (Addr#, ByteArray#,
                                                           byteArrayContents#,
                                                           plusAddr#)
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
import           Graphics.Vulkan.Types.Bitmasks           (VkBufferViewCreateFlags)
import           Graphics.Vulkan.Types.Enum.AccessFlags   (VkAccessFlags)
import           Graphics.Vulkan.Types.Enum.Buffer        (VkBufferCreateFlags,
                                                           VkBufferUsageFlags)
import           Graphics.Vulkan.Types.Enum.Format        (VkFormat)
import           Graphics.Vulkan.Types.Enum.SharingMode   (VkSharingMode)
import           Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import           Graphics.Vulkan.Types.Handles            (VkBuffer)
import           Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)
import           Graphics.Vulkan.Types.Struct.Image       (VkImageSubresourceLayers)
import           Graphics.Vulkan.Types.Struct.Offset      (VkOffset3D)
import           System.IO.Unsafe                         (unsafeDupablePerformIO)

-- | > typedef struct VkBufferCopy {
--   >     VkDeviceSize           srcOffset;
--   >     VkDeviceSize           dstOffset;
--   >     VkDeviceSize           size;
--   > } VkBufferCopy;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferCopy VkBufferCopy registry at www.khronos.org>
data VkBufferCopy = VkBufferCopy# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkBufferCopy where
        type StructFields VkBufferCopy =
             '["srcOffset", "dstOffset", "size"] -- ' closing tick for hsc2hs
        type CUnionType VkBufferCopy = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkBufferCopy = 'False -- ' closing tick for hsc2hs
        type StructExtends VkBufferCopy = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "srcOffset" VkBufferCopy
         where
        type FieldType "srcOffset" VkBufferCopy = VkDeviceSize
        type FieldOptional "srcOffset" VkBufferCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcOffset" VkBufferCopy =
             (0)
{-# LINE 95 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "srcOffset" VkBufferCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "srcOffset" VkBufferCopy
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 109 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "srcOffset" VkBufferCopy
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 119 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "dstOffset" VkBufferCopy
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 140 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "dstOffset" VkBufferCopy
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "size" VkBufferCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 169 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "size" VkBufferCopy
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 179 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance Show VkBufferCopy where
        showsPrec d x
          = showString "VkBufferCopy {" .
              showString "srcOffset = " .
                showsPrec d (getField @"srcOffset" x) .
                  showString ", " .
                    showString "dstOffset = " .
                      showsPrec d (getField @"dstOffset" x) .
                        showString ", " .
                          showString "size = " .
                            showsPrec d (getField @"size" x) . showChar '}'

-- | > typedef struct VkBufferCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkBufferCreateFlags    flags;
--   >     VkDeviceSize           size;
--   >     VkBufferUsageFlags     usage;
--   >     VkSharingMode          sharingMode;
--   >     uint32_t               queueFamilyIndexCount;
--   >     const uint32_t*        pQueueFamilyIndices;
--   > } VkBufferCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferCreateInfo VkBufferCreateInfo registry at www.khronos.org>
data VkBufferCreateInfo = VkBufferCreateInfo# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkBufferCreateInfo where
        sizeOf ~_ = (56)
{-# LINE 220 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkBufferCreateInfo where
        type StructFields VkBufferCreateInfo =
             '["sType", "pNext", "flags", "size", "usage", "sharingMode", -- ' closing tick for hsc2hs
               "queueFamilyIndexCount", "pQueueFamilyIndices"]
        type CUnionType VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkBufferCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-} HasField "size" VkBufferCreateInfo
         where
        type FieldType "size" VkBufferCreateInfo = VkDeviceSize
        type FieldOptional "size" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "size" VkBufferCreateInfo =
             (24)
{-# LINE 351 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "size" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "size" VkBufferCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 365 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "size" VkBufferCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 375 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-} HasField "usage" VkBufferCreateInfo
         where
        type FieldType "usage" VkBufferCreateInfo = VkBufferUsageFlags
        type FieldOptional "usage" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "usage" VkBufferCreateInfo =
             (32)
{-# LINE 382 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "usage" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "usage" VkBufferCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 396 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "usage" VkBufferCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 406 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sharingMode" VkBufferCreateInfo where
        type FieldType "sharingMode" VkBufferCreateInfo = VkSharingMode
        type FieldOptional "sharingMode" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sharingMode" VkBufferCreateInfo =
             (36)
{-# LINE 413 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "sharingMode" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (36)
{-# LINE 420 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sharingMode" VkBufferCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 427 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (36)
{-# LINE 431 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sharingMode" VkBufferCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 437 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "queueFamilyIndexCount" VkBufferCreateInfo where
        type FieldType "queueFamilyIndexCount" VkBufferCreateInfo = Word32
        type FieldOptional "queueFamilyIndexCount" VkBufferCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "queueFamilyIndexCount" VkBufferCreateInfo =
             (40)
{-# LINE 445 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "queueFamilyIndexCount" VkBufferCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "queueFamilyIndexCount" VkBufferCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 461 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "queueFamilyIndexCount" VkBufferCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 471 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pQueueFamilyIndices" VkBufferCreateInfo where
        type FieldType "pQueueFamilyIndices" VkBufferCreateInfo =
             Ptr Word32
        type FieldOptional "pQueueFamilyIndices" VkBufferCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pQueueFamilyIndices" VkBufferCreateInfo =
             (48)
{-# LINE 480 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "pQueueFamilyIndices" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pQueueFamilyIndices" VkBufferCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 495 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pQueueFamilyIndices" VkBufferCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 505 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance Show VkBufferCreateInfo where
        showsPrec d x
          = showString "VkBufferCreateInfo {" .
              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 "size = " .
                                  showsPrec d (getField @"size" x) .
                                    showString ", " .
                                      showString "usage = " .
                                        showsPrec d (getField @"usage" x) .
                                          showString ", " .
                                            showString "sharingMode = " .
                                              showsPrec d (getField @"sharingMode" x) .
                                                showString ", " .
                                                  showString "queueFamilyIndexCount = " .
                                                    showsPrec d
                                                      (getField @"queueFamilyIndexCount" x)
                                                      .
                                                      showString ", " .
                                                        showString "pQueueFamilyIndices = " .
                                                          showsPrec d
                                                            (getField @"pQueueFamilyIndices" x)
                                                            . showChar '}'

-- | > typedef struct VkBufferImageCopy {
--   >     VkDeviceSize           bufferOffset;
--   >     uint32_t               bufferRowLength;
--   >     uint32_t               bufferImageHeight;
--   >     VkImageSubresourceLayers imageSubresource;
--   >     VkOffset3D             imageOffset;
--   >     VkExtent3D             imageExtent;
--   > } VkBufferImageCopy;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferImageCopy VkBufferImageCopy registry at www.khronos.org>
data VkBufferImageCopy = VkBufferImageCopy# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkBufferImageCopy where
        sizeOf ~_ = (56)
{-# LINE 563 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkBufferImageCopy where
        type StructFields VkBufferImageCopy =
             '["bufferOffset", "bufferRowLength", "bufferImageHeight", -- ' closing tick for hsc2hs
               "imageSubresource", "imageOffset", "imageExtent"]
        type CUnionType VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type StructExtends VkBufferImageCopy = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "bufferOffset" VkBufferImageCopy where
        type FieldType "bufferOffset" VkBufferImageCopy = VkDeviceSize
        type FieldOptional "bufferOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "bufferOffset" VkBufferImageCopy =
             (0)
{-# LINE 601 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "bufferOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "bufferOffset" VkBufferImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 615 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "bufferOffset" VkBufferImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 625 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "bufferRowLength" VkBufferImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 647 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "bufferRowLength" VkBufferImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 657 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "bufferImageHeight" VkBufferImageCopy where
        type FieldType "bufferImageHeight" VkBufferImageCopy = Word32
        type FieldOptional "bufferImageHeight" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "bufferImageHeight" VkBufferImageCopy =
             (12)
{-# LINE 664 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "bufferImageHeight" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "bufferImageHeight" VkBufferImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 679 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "bufferImageHeight" VkBufferImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 689 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "imageSubresource" VkBufferImageCopy where
        type FieldType "imageSubresource" VkBufferImageCopy =
             VkImageSubresourceLayers
        type FieldOptional "imageSubresource" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageSubresource" VkBufferImageCopy =
             (16)
{-# LINE 697 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "imageSubresource" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageSubresource" VkBufferImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 712 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageSubresource" VkBufferImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 722 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "imageOffset" VkBufferImageCopy where
        type FieldType "imageOffset" VkBufferImageCopy = VkOffset3D
        type FieldOptional "imageOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageOffset" VkBufferImageCopy =
             (32)
{-# LINE 729 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "imageOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageOffset" VkBufferImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 743 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageOffset" VkBufferImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 753 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "imageExtent" VkBufferImageCopy where
        type FieldType "imageExtent" VkBufferImageCopy = VkExtent3D
        type FieldOptional "imageExtent" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageExtent" VkBufferImageCopy =
             (44)
{-# LINE 760 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "imageExtent" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (44)
{-# LINE 767 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "imageExtent" VkBufferImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 774 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (44)
{-# LINE 778 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "imageExtent" VkBufferImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 784 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance Show VkBufferImageCopy where
        showsPrec d x
          = showString "VkBufferImageCopy {" .
              showString "bufferOffset = " .
                showsPrec d (getField @"bufferOffset" x) .
                  showString ", " .
                    showString "bufferRowLength = " .
                      showsPrec d (getField @"bufferRowLength" x) .
                        showString ", " .
                          showString "bufferImageHeight = " .
                            showsPrec d (getField @"bufferImageHeight" x) .
                              showString ", " .
                                showString "imageSubresource = " .
                                  showsPrec d (getField @"imageSubresource" x) .
                                    showString ", " .
                                      showString "imageOffset = " .
                                        showsPrec d (getField @"imageOffset" x) .
                                          showString ", " .
                                            showString "imageExtent = " .
                                              showsPrec d (getField @"imageExtent" x) . showChar '}'

-- | > typedef struct VkBufferMemoryBarrier {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkAccessFlags          srcAccessMask;
--   >     VkAccessFlags          dstAccessMask;
--   >     uint32_t               srcQueueFamilyIndex;
--   >     uint32_t               dstQueueFamilyIndex;
--   >     VkBuffer               buffer;
--   >     VkDeviceSize           offset;
--   >     VkDeviceSize           size;
--   > } VkBufferMemoryBarrier;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferMemoryBarrier VkBufferMemoryBarrier registry at www.khronos.org>
data VkBufferMemoryBarrier = VkBufferMemoryBarrier# Addr#
                                                    ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkBufferMemoryBarrier where
        sizeOf ~_ = (56)
{-# LINE 836 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkBufferMemoryBarrier where
        type StructFields VkBufferMemoryBarrier =
             '["sType", "pNext", "srcAccessMask", "dstAccessMask", -- ' closing tick for hsc2hs
               "srcQueueFamilyIndex", "dstQueueFamilyIndex", "buffer", "offset",
               "size"]
        type CUnionType VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type StructExtends VkBufferMemoryBarrier = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "srcAccessMask" VkBufferMemoryBarrier where
        type FieldType "srcAccessMask" VkBufferMemoryBarrier =
             VkAccessFlags
        type FieldOptional "srcAccessMask" VkBufferMemoryBarrier = 'True -- ' closing tick for hsc2hs
        type FieldOffset "srcAccessMask" VkBufferMemoryBarrier =
             (16)
{-# LINE 938 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "srcAccessMask" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "srcAccessMask" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 953 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcAccessMask" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 963 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstAccessMask" VkBufferMemoryBarrier where
        type FieldType "dstAccessMask" VkBufferMemoryBarrier =
             VkAccessFlags
        type FieldOptional "dstAccessMask" VkBufferMemoryBarrier = 'True -- ' closing tick for hsc2hs
        type FieldOffset "dstAccessMask" VkBufferMemoryBarrier =
             (20)
{-# LINE 971 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "dstAccessMask" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "dstAccessMask" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 986 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstAccessMask" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 996 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1020 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1030 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 1054 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 1064 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "buffer" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1085 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "buffer" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1095 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "offset" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 1116 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "offset" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 1126 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-} HasField "size" VkBufferMemoryBarrier
         where
        type FieldType "size" VkBufferMemoryBarrier = VkDeviceSize
        type FieldOptional "size" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type FieldOffset "size" VkBufferMemoryBarrier =
             (48)
{-# LINE 1133 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "size" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "size" VkBufferMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 1147 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "size" VkBufferMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 1157 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance Show VkBufferMemoryBarrier where
        showsPrec d x
          = showString "VkBufferMemoryBarrier {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "srcAccessMask = " .
                            showsPrec d (getField @"srcAccessMask" x) .
                              showString ", " .
                                showString "dstAccessMask = " .
                                  showsPrec d (getField @"dstAccessMask" x) .
                                    showString ", " .
                                      showString "srcQueueFamilyIndex = " .
                                        showsPrec d (getField @"srcQueueFamilyIndex" x) .
                                          showString ", " .
                                            showString "dstQueueFamilyIndex = " .
                                              showsPrec d (getField @"dstQueueFamilyIndex" x) .
                                                showString ", " .
                                                  showString "buffer = " .
                                                    showsPrec d (getField @"buffer" x) .
                                                      showString ", " .
                                                        showString "offset = " .
                                                          showsPrec d (getField @"offset" x) .
                                                            showString ", " .
                                                              showString "size = " .
                                                                showsPrec d (getField @"size" x) .
                                                                  showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "buffer" VkBufferMemoryRequirementsInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1335 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "buffer" VkBufferMemoryRequirementsInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1345 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

-- | Alias for `VkBufferMemoryRequirementsInfo2`
type VkBufferMemoryRequirementsInfo2KHR =
     VkBufferMemoryRequirementsInfo2

-- | > typedef struct VkBufferViewCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkBufferViewCreateFlagsflags;
--   >     VkBuffer               buffer;
--   >     VkFormat               format;
--   >     VkDeviceSize           offset;
--   >     VkDeviceSize           range;
--   > } VkBufferViewCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferViewCreateInfo VkBufferViewCreateInfo registry at www.khronos.org>
data VkBufferViewCreateInfo = VkBufferViewCreateInfo# Addr#
                                                      ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkBufferViewCreateInfo where
        sizeOf ~_ = (56)
{-# LINE 1390 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkBufferViewCreateInfo where
        type StructFields VkBufferViewCreateInfo =
             '["sType", "pNext", "flags", "buffer", "format", "offset", "range"] -- ' closing tick for hsc2hs
        type CUnionType VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkBufferViewCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "buffer" VkBufferViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1535 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "buffer" VkBufferViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1545 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "format" VkBufferViewCreateInfo where
        type FieldType "format" VkBufferViewCreateInfo = VkFormat
        type FieldOptional "format" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "format" VkBufferViewCreateInfo =
             (32)
{-# LINE 1552 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}
        type FieldIsArray "format" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "format" VkBufferViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1566 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "format" VkBufferViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1576 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "offset" VkBufferViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 1597 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "offset" VkBufferViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 1607 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "range" VkBufferViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 1628 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "range" VkBufferViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 1638 "src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc" #-}

instance Show VkBufferViewCreateInfo where
        showsPrec d x
          = showString "VkBufferViewCreateInfo {" .
              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 "buffer = " .
                                  showsPrec d (getField @"buffer" x) .
                                    showString ", " .
                                      showString "format = " .
                                        showsPrec d (getField @"format" x) .
                                          showString ", " .
                                            showString "offset = " .
                                              showsPrec d (getField @"offset" x) .
                                                showString ", " .
                                                  showString "range = " .
                                                    showsPrec d (getField @"range" x) . showChar '}'