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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms       #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
{-# LANGUAGE UndecidableInstances  #-}
module Graphics.Vulkan.Types.Struct.Image
       (VkImageBlit(..), VkImageCopy(..), VkImageCreateInfo(..),
        VkImageFormatListCreateInfoKHR(..), VkImageFormatProperties(..),
        VkImageFormatProperties2(..), VkImageFormatProperties2KHR,
        VkImageMemoryBarrier(..), VkImageMemoryRequirementsInfo2(..),
        VkImageMemoryRequirementsInfo2KHR,
        VkImagePlaneMemoryRequirementsInfo(..),
        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve(..),
        VkImageSparseMemoryRequirementsInfo2(..),
        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource(..),
        VkImageSubresourceLayers(..), VkImageSubresourceRange(..),
        VkImageSwapchainCreateInfoKHR(..), VkImageViewCreateInfo(..),
        VkImageViewUsageCreateInfo(..), VkImageViewUsageCreateInfoKHR)
       where
import           Foreign.Storable                              (Storable (..))
import           GHC.Base                                      (Addr#,
                                                                ByteArray#,
                                                                Proxy#,
                                                                byteArrayContents#,
                                                                plusAddr#,
                                                                proxy#)
import           GHC.TypeLits                                  (KnownNat,
                                                                natVal') -- ' closing tick for hsc2hs
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
import           Graphics.Vulkan.Types.Bitmasks                (VkImageViewCreateFlags)
import           Graphics.Vulkan.Types.Enum.AccessFlags        (VkAccessFlags)
import           Graphics.Vulkan.Types.Enum.Format             (VkFormat)
import           Graphics.Vulkan.Types.Enum.Image              (VkImageAspectFlagBits,
                                                                VkImageAspectFlags,
                                                                VkImageCreateFlags,
                                                                VkImageLayout,
                                                                VkImageTiling,
                                                                VkImageType,
                                                                VkImageUsageFlags,
                                                                VkImageViewType)
import           Graphics.Vulkan.Types.Enum.SampleCountFlags   (VkSampleCountFlagBits,
                                                                VkSampleCountFlags)
import           Graphics.Vulkan.Types.Enum.SharingMode        (VkSharingMode)
import           Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
import           Graphics.Vulkan.Types.Handles                 (VkImage,
                                                                VkSwapchainKHR)
import           Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
import           Graphics.Vulkan.Types.Struct.Extent           (VkExtent3D)
import           Graphics.Vulkan.Types.Struct.Offset           (VkOffset3D)
import           System.IO.Unsafe                              (unsafeDupablePerformIO)

-- | > typedef struct VkImageBlit {
--   >     VkImageSubresourceLayers srcSubresource;
--   >     VkOffset3D             srcOffsets[2];
--   >     VkImageSubresourceLayers dstSubresource;
--   >     VkOffset3D             dstOffsets[2];
--   > } VkImageBlit;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageBlit VkImageBlit registry at www.khronos.org>
data VkImageBlit = VkImageBlit# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageBlit where
        sizeOf ~_ = (80)
{-# LINE 86 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageBlit where
        type StructFields VkImageBlit =
             '["srcSubresource", "srcOffsets", "dstSubresource", "dstOffsets"] -- ' closing tick for hsc2hs
        type CUnionType VkImageBlit = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageBlit = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageBlit = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "srcSubresource" VkImageBlit
         where
        type FieldType "srcSubresource" VkImageBlit =
             VkImageSubresourceLayers
        type FieldOptional "srcSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcSubresource" VkImageBlit =
             (0)
{-# LINE 124 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "srcSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcSubresource" VkImageBlit where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 138 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcSubresource" VkImageBlit where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 148 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "srcOffsets" VkImageBlit
         where
        type FieldType "srcOffsets" VkImageBlit = VkOffset3D
        type FieldOptional "srcOffsets" VkImageBlit = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcOffsets" VkImageBlit =
             (16)
{-# LINE 155 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "srcOffsets" VkImageBlit = 'True -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

        {-# SPECIALISE instance
                       CanReadFieldArray "srcOffsets" 1 VkImageBlit #-}
        type FieldArrayLength "srcOffsets" VkImageBlit = 2

        {-# INLINE fieldArrayLength #-}
        fieldArrayLength = 2

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

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

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

        {-# SPECIALISE instance
                       CanWriteFieldArray "srcOffsets" 1 VkImageBlit #-}

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

instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageBlit
         where
        type FieldType "dstSubresource" VkImageBlit =
             VkImageSubresourceLayers
        type FieldOptional "dstSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstSubresource" VkImageBlit =
             (40)
{-# LINE 217 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "dstSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstSubresource" VkImageBlit where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 231 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstSubresource" VkImageBlit where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 241 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "dstOffsets" VkImageBlit
         where
        type FieldType "dstOffsets" VkImageBlit = VkOffset3D
        type FieldOptional "dstOffsets" VkImageBlit = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstOffsets" VkImageBlit =
             (56)
{-# LINE 248 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "dstOffsets" VkImageBlit = 'True -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

        {-# SPECIALISE instance
                       CanReadFieldArray "dstOffsets" 1 VkImageBlit #-}
        type FieldArrayLength "dstOffsets" VkImageBlit = 2

        {-# INLINE fieldArrayLength #-}
        fieldArrayLength = 2

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

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

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

        {-# SPECIALISE instance
                       CanWriteFieldArray "dstOffsets" 1 VkImageBlit #-}

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

instance Show VkImageBlit where
        showsPrec d x
          = showString "VkImageBlit {" .
              showString "srcSubresource = " .
                showsPrec d (getField @"srcSubresource" x) .
                  showString ", " .
                    (showString "srcOffsets = [" .
                       showsPrec d
                         (let s = sizeOf (undefined :: FieldType "srcOffsets" VkImageBlit)
                              o = fieldOffset @"srcOffsets" @VkImageBlit
                              f i
                                = peekByteOff (unsafePtr x) i ::
                                    IO (FieldType "srcOffsets" VkImageBlit)
                            in
                            unsafeDupablePerformIO . mapM f $
                              map (\ i -> o + i * s) [0 .. 2 - 1])
                         . showChar ']')
                      .
                      showString ", " .
                        showString "dstSubresource = " .
                          showsPrec d (getField @"dstSubresource" x) .
                            showString ", " .
                              (showString "dstOffsets = [" .
                                 showsPrec d
                                   (let s = sizeOf (undefined :: FieldType "dstOffsets" VkImageBlit)
                                        o = fieldOffset @"dstOffsets" @VkImageBlit
                                        f i
                                          = peekByteOff (unsafePtr x) i ::
                                              IO (FieldType "dstOffsets" VkImageBlit)
                                      in
                                      unsafeDupablePerformIO . mapM f $
                                        map (\ i -> o + i * s) [0 .. 2 - 1])
                                   . showChar ']')
                                . showChar '}'

-- | > typedef struct VkImageCopy {
--   >     VkImageSubresourceLayers srcSubresource;
--   >     VkOffset3D             srcOffset;
--   >     VkImageSubresourceLayers dstSubresource;
--   >     VkOffset3D             dstOffset;
--   >     VkExtent3D             extent;
--   > } VkImageCopy;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageCopy VkImageCopy registry at www.khronos.org>
data VkImageCopy = VkImageCopy# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageCopy where
        sizeOf ~_ = (68)
{-# LINE 363 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageCopy where
        type StructFields VkImageCopy =
             '["srcSubresource", "srcOffset", "dstSubresource", "dstOffset", -- ' closing tick for hsc2hs
               "extent"]
        type CUnionType VkImageCopy = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageCopy = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageCopy = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "srcSubresource" VkImageCopy
         where
        type FieldType "srcSubresource" VkImageCopy =
             VkImageSubresourceLayers
        type FieldOptional "srcSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcSubresource" VkImageCopy =
             (0)
{-# LINE 402 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "srcSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcSubresource" VkImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 416 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcSubresource" VkImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 426 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "srcOffset" VkImageCopy where
        type FieldType "srcOffset" VkImageCopy = VkOffset3D
        type FieldOptional "srcOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcOffset" VkImageCopy =
             (16)
{-# LINE 432 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "srcOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "srcOffset" VkImageCopy
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 446 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "srcOffset" VkImageCopy
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 456 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageCopy
         where
        type FieldType "dstSubresource" VkImageCopy =
             VkImageSubresourceLayers
        type FieldOptional "dstSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstSubresource" VkImageCopy =
             (28)
{-# LINE 464 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "dstSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstSubresource" VkImageCopy where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 478 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstSubresource" VkImageCopy where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 488 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "dstOffset" VkImageCopy where
        type FieldType "dstOffset" VkImageCopy = VkOffset3D
        type FieldOptional "dstOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstOffset" VkImageCopy =
             (44)
{-# LINE 494 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "dstOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "dstOffset" VkImageCopy
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 508 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "dstOffset" VkImageCopy
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 518 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "extent" VkImageCopy where
        type FieldType "extent" VkImageCopy = VkExtent3D
        type FieldOptional "extent" VkImageCopy = 'False -- ' closing tick for hsc2hs
        type FieldOffset "extent" VkImageCopy =
             (56)
{-# LINE 524 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "extent" VkImageCopy = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "extent" VkImageCopy
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 538 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "extent" VkImageCopy
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 548 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageCopy where
        showsPrec d x
          = showString "VkImageCopy {" .
              showString "srcSubresource = " .
                showsPrec d (getField @"srcSubresource" x) .
                  showString ", " .
                    showString "srcOffset = " .
                      showsPrec d (getField @"srcOffset" x) .
                        showString ", " .
                          showString "dstSubresource = " .
                            showsPrec d (getField @"dstSubresource" x) .
                              showString ", " .
                                showString "dstOffset = " .
                                  showsPrec d (getField @"dstOffset" x) .
                                    showString ", " .
                                      showString "extent = " .
                                        showsPrec d (getField @"extent" x) . showChar '}'

-- | > typedef struct VkImageCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkImageCreateFlags     flags;
--   >     VkImageType            imageType;
--   >     VkFormat               format;
--   >     VkExtent3D             extent;
--   >     uint32_t               mipLevels;
--   >     uint32_t               arrayLayers;
--   >     VkSampleCountFlagBits  samples;
--   >     VkImageTiling          tiling;
--   >     VkImageUsageFlags      usage;
--   >     VkSharingMode          sharingMode;
--   >     uint32_t               queueFamilyIndexCount;
--   >     const uint32_t*        pQueueFamilyIndices;
--   >     VkImageLayout          initialLayout;
--   > } VkImageCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageCreateInfo VkImageCreateInfo registry at www.khronos.org>
data VkImageCreateInfo = VkImageCreateInfo# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageCreateInfo where
        sizeOf ~_ = (88)
{-# LINE 602 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageCreateInfo where
        type StructFields VkImageCreateInfo =
             '["sType", "pNext", "flags", "imageType", "format", "extent", -- ' closing tick for hsc2hs
               "mipLevels", "arrayLayers", "samples", "tiling", "usage",
               "sharingMode", "queueFamilyIndexCount", "pQueueFamilyIndices",
               "initialLayout"]
        type CUnionType VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-} HasField "imageType" VkImageCreateInfo
         where
        type FieldType "imageType" VkImageCreateInfo = VkImageType
        type FieldOptional "imageType" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageType" VkImageCreateInfo =
             (20)
{-# LINE 735 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "imageType" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageType" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 749 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageType" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 759 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "format" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 780 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "format" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 790 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "extent" VkImageCreateInfo
         where
        type FieldType "extent" VkImageCreateInfo = VkExtent3D
        type FieldOptional "extent" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "extent" VkImageCreateInfo =
             (28)
{-# LINE 797 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "extent" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "extent" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 811 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "extent" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 821 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "mipLevels" VkImageCreateInfo
         where
        type FieldType "mipLevels" VkImageCreateInfo = Word32
        type FieldOptional "mipLevels" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "mipLevels" VkImageCreateInfo =
             (40)
{-# LINE 828 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "mipLevels" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "mipLevels" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 842 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "mipLevels" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 852 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "arrayLayers" VkImageCreateInfo where
        type FieldType "arrayLayers" VkImageCreateInfo = Word32
        type FieldOptional "arrayLayers" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "arrayLayers" VkImageCreateInfo =
             (44)
{-# LINE 859 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "arrayLayers" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "arrayLayers" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 873 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "arrayLayers" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 883 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "samples" VkImageCreateInfo
         where
        type FieldType "samples" VkImageCreateInfo = VkSampleCountFlagBits
        type FieldOptional "samples" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "samples" VkImageCreateInfo =
             (48)
{-# LINE 890 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "samples" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "samples" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 904 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "samples" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 914 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "tiling" VkImageCreateInfo
         where
        type FieldType "tiling" VkImageCreateInfo = VkImageTiling
        type FieldOptional "tiling" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "tiling" VkImageCreateInfo =
             (52)
{-# LINE 921 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "tiling" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (52)
{-# LINE 928 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "tiling" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 935 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (52)
{-# LINE 939 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "tiling" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 945 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "usage" VkImageCreateInfo
         where
        type FieldType "usage" VkImageCreateInfo = VkImageUsageFlags
        type FieldOptional "usage" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "usage" VkImageCreateInfo =
             (56)
{-# LINE 952 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "usage" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "usage" VkImageCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 966 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "usage" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 976 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "sharingMode" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (60))
{-# LINE 997 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "sharingMode" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (60)
{-# LINE 1007 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "queueFamilyIndexCount" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 1031 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "queueFamilyIndexCount" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 1041 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pQueueFamilyIndices" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (72))
{-# LINE 1063 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pQueueFamilyIndices" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (72)
{-# LINE 1073 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "initialLayout" VkImageCreateInfo where
        type FieldType "initialLayout" VkImageCreateInfo = VkImageLayout
        type FieldOptional "initialLayout" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "initialLayout" VkImageCreateInfo =
             (80)
{-# LINE 1080 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "initialLayout" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "initialLayout" VkImageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (80))
{-# LINE 1095 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "initialLayout" VkImageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (80)
{-# LINE 1105 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageCreateInfo where
        showsPrec d x
          = showString "VkImageCreateInfo {" .
              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 "imageType = " .
                                  showsPrec d (getField @"imageType" x) .
                                    showString ", " .
                                      showString "format = " .
                                        showsPrec d (getField @"format" x) .
                                          showString ", " .
                                            showString "extent = " .
                                              showsPrec d (getField @"extent" x) .
                                                showString ", " .
                                                  showString "mipLevels = " .
                                                    showsPrec d (getField @"mipLevels" x) .
                                                      showString ", " .
                                                        showString "arrayLayers = " .
                                                          showsPrec d (getField @"arrayLayers" x) .
                                                            showString ", " .
                                                              showString "samples = " .
                                                                showsPrec d (getField @"samples" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString "tiling = " .
                                                                      showsPrec d
                                                                        (getField @"tiling" 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)
                                                                                                .
                                                                                                showString
                                                                                                  ", "
                                                                                                  .
                                                                                                  showString
                                                                                                    "initialLayout = "
                                                                                                    .
                                                                                                    showsPrec
                                                                                                      d
                                                                                                      (getField
                                                                                                         @"initialLayout"
                                                                                                         x)
                                                                                                      .
                                                                                                      showChar
                                                                                                        '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageFormatListCreateInfoKHR where
        type StructFields VkImageFormatListCreateInfoKHR =
             '["sType", "pNext", "viewFormatCount", "pViewFormats"] -- ' closing tick for hsc2hs
        type CUnionType VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageFormatListCreateInfoKHR =
             '[VkImageCreateInfo] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "viewFormatCount" VkImageFormatListCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1342 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "viewFormatCount" VkImageFormatListCreateInfoKHR
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1353 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pViewFormats" VkImageFormatListCreateInfoKHR where
        type FieldType "pViewFormats" VkImageFormatListCreateInfoKHR =
             Ptr VkFormat
        type FieldOptional "pViewFormats" VkImageFormatListCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pViewFormats" VkImageFormatListCreateInfoKHR =
             (24)
{-# LINE 1362 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "pViewFormats" VkImageFormatListCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "pViewFormats" VkImageFormatListCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1378 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "pViewFormats" VkImageFormatListCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1388 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | > typedef struct VkImageFormatProperties {
--   >     VkExtent3D             maxExtent;
--   >     uint32_t               maxMipLevels;
--   >     uint32_t               maxArrayLayers;
--   >     VkSampleCountFlags     sampleCounts;
--   >     VkDeviceSize           maxResourceSize;
--   > } VkImageFormatProperties;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatProperties VkImageFormatProperties registry at www.khronos.org>
data VkImageFormatProperties = VkImageFormatProperties# Addr#
                                                        ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageFormatProperties where
        type StructFields VkImageFormatProperties =
             '["maxExtent", "maxMipLevels", "maxArrayLayers", "sampleCounts", -- ' closing tick for hsc2hs
               "maxResourceSize"]
        type CUnionType VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageFormatProperties = 'True -- ' closing tick for hsc2hs
        type StructExtends VkImageFormatProperties = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "maxExtent" VkImageFormatProperties where
        type FieldType "maxExtent" VkImageFormatProperties = VkExtent3D
        type FieldOptional "maxExtent" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxExtent" VkImageFormatProperties =
             (0)
{-# LINE 1468 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "maxExtent" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxExtent" VkImageFormatProperties where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1483 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxExtent" VkImageFormatProperties where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1493 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxMipLevels" VkImageFormatProperties where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 1515 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxMipLevels" VkImageFormatProperties where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 1525 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxArrayLayers" VkImageFormatProperties where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1548 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxArrayLayers" VkImageFormatProperties where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1558 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sampleCounts" VkImageFormatProperties where
        type FieldType "sampleCounts" VkImageFormatProperties =
             VkSampleCountFlags
        type FieldOptional "sampleCounts" VkImageFormatProperties = 'True -- ' closing tick for hsc2hs
        type FieldOffset "sampleCounts" VkImageFormatProperties =
             (20)
{-# LINE 1566 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "sampleCounts" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "sampleCounts" VkImageFormatProperties where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1581 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "sampleCounts" VkImageFormatProperties where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1591 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxResourceSize" VkImageFormatProperties where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1616 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxResourceSize" VkImageFormatProperties where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1626 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageFormatProperties where
        showsPrec d x
          = showString "VkImageFormatProperties {" .
              showString "maxExtent = " .
                showsPrec d (getField @"maxExtent" x) .
                  showString ", " .
                    showString "maxMipLevels = " .
                      showsPrec d (getField @"maxMipLevels" x) .
                        showString ", " .
                          showString "maxArrayLayers = " .
                            showsPrec d (getField @"maxArrayLayers" x) .
                              showString ", " .
                                showString "sampleCounts = " .
                                  showsPrec d (getField @"sampleCounts" x) .
                                    showString ", " .
                                      showString "maxResourceSize = " .
                                        showsPrec d (getField @"maxResourceSize" x) . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageFormatProperties2 where
        sizeOf ~_ = (48)
{-# LINE 1669 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "imageFormatProperties" VkImageFormatProperties2 where
        type FieldType "imageFormatProperties" VkImageFormatProperties2 =
             VkImageFormatProperties
        type FieldOptional "imageFormatProperties" VkImageFormatProperties2
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "imageFormatProperties" VkImageFormatProperties2 =
             (16)
{-# LINE 1771 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "imageFormatProperties" VkImageFormatProperties2
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageFormatProperties" VkImageFormatProperties2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1787 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageFormatProperties" VkImageFormatProperties2
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1798 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | Alias for `VkImageFormatProperties2`
type VkImageFormatProperties2KHR = VkImageFormatProperties2

-- | > typedef struct VkImageMemoryBarrier {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkAccessFlags          srcAccessMask;
--   >     VkAccessFlags          dstAccessMask;
--   >     VkImageLayout          oldLayout;
--   >     VkImageLayout          newLayout;
--   >     uint32_t               srcQueueFamilyIndex;
--   >     uint32_t               dstQueueFamilyIndex;
--   >     VkImage                image;
--   >     VkImageSubresourceRange subresourceRange;
--   > } VkImageMemoryBarrier;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageMemoryBarrier VkImageMemoryBarrier registry at www.khronos.org>
data VkImageMemoryBarrier = VkImageMemoryBarrier# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageMemoryBarrier where
        type StructFields VkImageMemoryBarrier =
             '["sType", "pNext", "srcAccessMask", "dstAccessMask", "oldLayout", -- ' closing tick for hsc2hs
               "newLayout", "srcQueueFamilyIndex", "dstQueueFamilyIndex", "image",
               "subresourceRange"]
        type CUnionType VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageMemoryBarrier = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "oldLayout" VkImageMemoryBarrier where
        type FieldType "oldLayout" VkImageMemoryBarrier = VkImageLayout
        type FieldOptional "oldLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type FieldOffset "oldLayout" VkImageMemoryBarrier =
             (24)
{-# LINE 2009 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "oldLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "oldLayout" VkImageMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2023 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "oldLayout" VkImageMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2033 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "newLayout" VkImageMemoryBarrier where
        type FieldType "newLayout" VkImageMemoryBarrier = VkImageLayout
        type FieldOptional "newLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type FieldOffset "newLayout" VkImageMemoryBarrier =
             (28)
{-# LINE 2040 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "newLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "newLayout" VkImageMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 2054 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "newLayout" VkImageMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 2064 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcQueueFamilyIndex" VkImageMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2088 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcQueueFamilyIndex" VkImageMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2098 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstQueueFamilyIndex" VkImageMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 2122 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstQueueFamilyIndex" VkImageMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 2132 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "image" VkImageMemoryBarrier
         where
        type FieldType "image" VkImageMemoryBarrier = VkImage
        type FieldOptional "image" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type FieldOffset "image" VkImageMemoryBarrier =
             (40)
{-# LINE 2139 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "image" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "image" VkImageMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 2153 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "image" VkImageMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 2163 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "subresourceRange" VkImageMemoryBarrier where
        type FieldType "subresourceRange" VkImageMemoryBarrier =
             VkImageSubresourceRange
        type FieldOptional "subresourceRange" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
        type FieldOffset "subresourceRange" VkImageMemoryBarrier =
             (48)
{-# LINE 2171 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "subresourceRange" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "subresourceRange" VkImageMemoryBarrier where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 2186 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "subresourceRange" VkImageMemoryBarrier where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 2196 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageMemoryBarrier where
        showsPrec d x
          = showString "VkImageMemoryBarrier {" .
              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 "oldLayout = " .
                                        showsPrec d (getField @"oldLayout" x) .
                                          showString ", " .
                                            showString "newLayout = " .
                                              showsPrec d (getField @"newLayout" x) .
                                                showString ", " .
                                                  showString "srcQueueFamilyIndex = " .
                                                    showsPrec d (getField @"srcQueueFamilyIndex" x)
                                                      .
                                                      showString ", " .
                                                        showString "dstQueueFamilyIndex = " .
                                                          showsPrec d
                                                            (getField @"dstQueueFamilyIndex" x)
                                                            .
                                                            showString ", " .
                                                              showString "image = " .
                                                                showsPrec d (getField @"image" x) .
                                                                  showString ", " .
                                                                    showString "subresourceRange = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"subresourceRange"
                                                                           x)
                                                                        . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "image" VkImageMemoryRequirementsInfo2 where
        type FieldType "image" VkImageMemoryRequirementsInfo2 = VkImage
        type FieldOptional "image" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
        type FieldOffset "image" VkImageMemoryRequirementsInfo2 =
             (16)
{-# LINE 2368 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "image" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "image" VkImageMemoryRequirementsInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2383 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "image" VkImageMemoryRequirementsInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2393 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | Alias for `VkImageMemoryRequirementsInfo2`
type VkImageMemoryRequirementsInfo2KHR =
     VkImageMemoryRequirementsInfo2

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "planeAspect" VkImagePlaneMemoryRequirementsInfo where
        type FieldType "planeAspect" VkImagePlaneMemoryRequirementsInfo =
             VkImageAspectFlagBits
        type FieldOptional "planeAspect" VkImagePlaneMemoryRequirementsInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "planeAspect" VkImagePlaneMemoryRequirementsInfo =
             (16)
{-# LINE 2549 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "planeAspect" VkImagePlaneMemoryRequirementsInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "planeAspect" VkImagePlaneMemoryRequirementsInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2565 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "planeAspect" VkImagePlaneMemoryRequirementsInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2576 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | Alias for `VkImagePlaneMemoryRequirementsInfo`
type VkImagePlaneMemoryRequirementsInfoKHR =
     VkImagePlaneMemoryRequirementsInfo

-- | > typedef struct VkImageResolve {
--   >     VkImageSubresourceLayers srcSubresource;
--   >     VkOffset3D             srcOffset;
--   >     VkImageSubresourceLayers dstSubresource;
--   >     VkOffset3D             dstOffset;
--   >     VkExtent3D             extent;
--   > } VkImageResolve;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageResolve VkImageResolve registry at www.khronos.org>
data VkImageResolve = VkImageResolve# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageResolve where
        sizeOf ~_ = (68)
{-# LINE 2618 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageResolve where
        type StructFields VkImageResolve =
             '["srcSubresource", "srcOffset", "dstSubresource", "dstOffset", -- ' closing tick for hsc2hs
               "extent"]
        type CUnionType VkImageResolve = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageResolve = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageResolve = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "srcSubresource" VkImageResolve where
        type FieldType "srcSubresource" VkImageResolve =
             VkImageSubresourceLayers
        type FieldOptional "srcSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcSubresource" VkImageResolve =
             (0)
{-# LINE 2657 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "srcSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcSubresource" VkImageResolve where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 2671 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcSubresource" VkImageResolve where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 2681 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "srcOffset" VkImageResolve
         where
        type FieldType "srcOffset" VkImageResolve = VkOffset3D
        type FieldOptional "srcOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcOffset" VkImageResolve =
             (16)
{-# LINE 2688 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "srcOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcOffset" VkImageResolve where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2702 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcOffset" VkImageResolve where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2712 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstSubresource" VkImageResolve where
        type FieldType "dstSubresource" VkImageResolve =
             VkImageSubresourceLayers
        type FieldOptional "dstSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstSubresource" VkImageResolve =
             (28)
{-# LINE 2720 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "dstSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstSubresource" VkImageResolve where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 2734 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstSubresource" VkImageResolve where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 2744 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "dstOffset" VkImageResolve
         where
        type FieldType "dstOffset" VkImageResolve = VkOffset3D
        type FieldOptional "dstOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstOffset" VkImageResolve =
             (44)
{-# LINE 2751 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "dstOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstOffset" VkImageResolve where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 2765 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstOffset" VkImageResolve where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 2775 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-} HasField "extent" VkImageResolve where
        type FieldType "extent" VkImageResolve = VkExtent3D
        type FieldOptional "extent" VkImageResolve = 'False -- ' closing tick for hsc2hs
        type FieldOffset "extent" VkImageResolve =
             (56)
{-# LINE 2781 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "extent" VkImageResolve = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-} CanReadField "extent" VkImageResolve
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 2795 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-} CanWriteField "extent" VkImageResolve
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 2805 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageResolve where
        showsPrec d x
          = showString "VkImageResolve {" .
              showString "srcSubresource = " .
                showsPrec d (getField @"srcSubresource" x) .
                  showString ", " .
                    showString "srcOffset = " .
                      showsPrec d (getField @"srcOffset" x) .
                        showString ", " .
                          showString "dstSubresource = " .
                            showsPrec d (getField @"dstSubresource" x) .
                              showString ", " .
                                showString "dstOffset = " .
                                  showsPrec d (getField @"dstOffset" x) .
                                    showString ", " .
                                      showString "extent = " .
                                        showsPrec d (getField @"extent" x) . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "image" VkImageSparseMemoryRequirementsInfo2 where
        type FieldType "image" VkImageSparseMemoryRequirementsInfo2 =
             VkImage
        type FieldOptional "image" VkImageSparseMemoryRequirementsInfo2 =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "image" VkImageSparseMemoryRequirementsInfo2 =
             (16)
{-# LINE 2964 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "image" VkImageSparseMemoryRequirementsInfo2 =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "image" VkImageSparseMemoryRequirementsInfo2 where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2980 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "image" VkImageSparseMemoryRequirementsInfo2 where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2990 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | Alias for `VkImageSparseMemoryRequirementsInfo2`
type VkImageSparseMemoryRequirementsInfo2KHR =
     VkImageSparseMemoryRequirementsInfo2

-- | > typedef struct VkImageSubresource {
--   >     VkImageAspectFlags     aspectMask;
--   >     uint32_t               mipLevel;
--   >     uint32_t               arrayLayer;
--   > } VkImageSubresource;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresource VkImageSubresource registry at www.khronos.org>
data VkImageSubresource = VkImageSubresource# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageSubresource where
        sizeOf ~_ = (12)
{-# LINE 3030 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageSubresource where
        type StructFields VkImageSubresource =
             '["aspectMask", "mipLevel", "arrayLayer"] -- ' closing tick for hsc2hs
        type CUnionType VkImageSubresource = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageSubresource = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageSubresource = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "aspectMask" VkImageSubresource where
        type FieldType "aspectMask" VkImageSubresource = VkImageAspectFlags
        type FieldOptional "aspectMask" VkImageSubresource = 'False -- ' closing tick for hsc2hs
        type FieldOffset "aspectMask" VkImageSubresource =
             (0)
{-# LINE 3067 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "aspectMask" VkImageSubresource = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "aspectMask" VkImageSubresource where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3081 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "aspectMask" VkImageSubresource where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3091 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "mipLevel" VkImageSubresource where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 3112 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "mipLevel" VkImageSubresource where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 3122 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "arrayLayer" VkImageSubresource where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3143 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "arrayLayer" VkImageSubresource where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3153 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageSubresource where
        showsPrec d x
          = showString "VkImageSubresource {" .
              showString "aspectMask = " .
                showsPrec d (getField @"aspectMask" x) .
                  showString ", " .
                    showString "mipLevel = " .
                      showsPrec d (getField @"mipLevel" x) .
                        showString ", " .
                          showString "arrayLayer = " .
                            showsPrec d (getField @"arrayLayer" x) . showChar '}'

-- | > typedef struct VkImageSubresourceLayers {
--   >     VkImageAspectFlags     aspectMask;
--   >     uint32_t               mipLevel;
--   >     uint32_t               baseArrayLayer;
--   >     uint32_t               layerCount;
--   > } VkImageSubresourceLayers;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresourceLayers VkImageSubresourceLayers registry at www.khronos.org>
data VkImageSubresourceLayers = VkImageSubresourceLayers# Addr#
                                                          ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageSubresourceLayers where
        sizeOf ~_ = (16)
{-# LINE 3191 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageSubresourceLayers where
        type StructFields VkImageSubresourceLayers =
             '["aspectMask", "mipLevel", "baseArrayLayer", "layerCount"] -- ' closing tick for hsc2hs
        type CUnionType VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageSubresourceLayers = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "aspectMask" VkImageSubresourceLayers where
        type FieldType "aspectMask" VkImageSubresourceLayers =
             VkImageAspectFlags
        type FieldOptional "aspectMask" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
        type FieldOffset "aspectMask" VkImageSubresourceLayers =
             (0)
{-# LINE 3230 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "aspectMask" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "aspectMask" VkImageSubresourceLayers where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3245 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "aspectMask" VkImageSubresourceLayers where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3255 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "mipLevel" VkImageSubresourceLayers where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 3277 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "mipLevel" VkImageSubresourceLayers where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 3287 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "baseArrayLayer" VkImageSubresourceLayers where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3311 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "baseArrayLayer" VkImageSubresourceLayers where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3321 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "layerCount" VkImageSubresourceLayers where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 3343 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "layerCount" VkImageSubresourceLayers where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 3353 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageSubresourceLayers where
        showsPrec d x
          = showString "VkImageSubresourceLayers {" .
              showString "aspectMask = " .
                showsPrec d (getField @"aspectMask" x) .
                  showString ", " .
                    showString "mipLevel = " .
                      showsPrec d (getField @"mipLevel" x) .
                        showString ", " .
                          showString "baseArrayLayer = " .
                            showsPrec d (getField @"baseArrayLayer" x) .
                              showString ", " .
                                showString "layerCount = " .
                                  showsPrec d (getField @"layerCount" x) . showChar '}'

-- | > typedef struct VkImageSubresourceRange {
--   >     VkImageAspectFlags     aspectMask;
--   >     uint32_t               baseMipLevel;
--   >     uint32_t               levelCount;
--   >     uint32_t               baseArrayLayer;
--   >     uint32_t               layerCount;
--   > } VkImageSubresourceRange;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresourceRange VkImageSubresourceRange registry at www.khronos.org>
data VkImageSubresourceRange = VkImageSubresourceRange# Addr#
                                                        ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageSubresourceRange where
        sizeOf ~_ = (20)
{-# LINE 3395 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageSubresourceRange where
        type StructFields VkImageSubresourceRange =
             '["aspectMask", "baseMipLevel", "levelCount", "baseArrayLayer", -- ' closing tick for hsc2hs
               "layerCount"]
        type CUnionType VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageSubresourceRange = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "aspectMask" VkImageSubresourceRange where
        type FieldType "aspectMask" VkImageSubresourceRange =
             VkImageAspectFlags
        type FieldOptional "aspectMask" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
        type FieldOffset "aspectMask" VkImageSubresourceRange =
             (0)
{-# LINE 3434 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "aspectMask" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "aspectMask" VkImageSubresourceRange where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3449 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "aspectMask" VkImageSubresourceRange where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3459 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "baseMipLevel" VkImageSubresourceRange where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 3481 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "baseMipLevel" VkImageSubresourceRange where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 3491 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "levelCount" VkImageSubresourceRange where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3513 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "levelCount" VkImageSubresourceRange where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3523 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "baseArrayLayer" VkImageSubresourceRange where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 3546 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "baseArrayLayer" VkImageSubresourceRange where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 3556 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "layerCount" VkImageSubresourceRange where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3578 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "layerCount" VkImageSubresourceRange where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3588 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageSubresourceRange where
        showsPrec d x
          = showString "VkImageSubresourceRange {" .
              showString "aspectMask = " .
                showsPrec d (getField @"aspectMask" x) .
                  showString ", " .
                    showString "baseMipLevel = " .
                      showsPrec d (getField @"baseMipLevel" x) .
                        showString ", " .
                          showString "levelCount = " .
                            showsPrec d (getField @"levelCount" x) .
                              showString ", " .
                                showString "baseArrayLayer = " .
                                  showsPrec d (getField @"baseArrayLayer" x) .
                                    showString ", " .
                                      showString "layerCount = " .
                                        showsPrec d (getField @"layerCount" x) . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "swapchain" VkImageSwapchainCreateInfoKHR where
        type FieldType "swapchain" VkImageSwapchainCreateInfoKHR =
             VkSwapchainKHR
        type FieldOptional "swapchain" VkImageSwapchainCreateInfoKHR =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "swapchain" VkImageSwapchainCreateInfoKHR =
             (16)
{-# LINE 3740 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "swapchain" VkImageSwapchainCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "swapchain" VkImageSwapchainCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3756 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "swapchain" VkImageSwapchainCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3766 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | > typedef struct VkImageViewCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkImageViewCreateFlags flags;
--   >     VkImage                image;
--   >     VkImageViewType        viewType;
--   >     VkFormat               format;
--   >     VkComponentMapping     components;
--   >     VkImageSubresourceRange subresourceRange;
--   > } VkImageViewCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageViewCreateInfo VkImageViewCreateInfo registry at www.khronos.org>
data VkImageViewCreateInfo = VkImageViewCreateInfo# Addr#
                                                    ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkImageViewCreateInfo where
        sizeOf ~_ = (80)
{-# LINE 3808 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkImageViewCreateInfo where
        type StructFields VkImageViewCreateInfo =
             '["sType", "pNext", "flags", "image", "viewType", "format", -- ' closing tick for hsc2hs
               "components", "subresourceRange"]
        type CUnionType VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkImageViewCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-} HasField "image" VkImageViewCreateInfo
         where
        type FieldType "image" VkImageViewCreateInfo = VkImage
        type FieldOptional "image" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "image" VkImageViewCreateInfo =
             (24)
{-# LINE 3940 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "image" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "image" VkImageViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 3954 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "image" VkImageViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 3964 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "viewType" VkImageViewCreateInfo where
        type FieldType "viewType" VkImageViewCreateInfo = VkImageViewType
        type FieldOptional "viewType" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "viewType" VkImageViewCreateInfo =
             (32)
{-# LINE 3971 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "viewType" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "viewType" VkImageViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 3985 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "viewType" VkImageViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 3995 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "format" VkImageViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 4016 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "format" VkImageViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 4026 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "components" VkImageViewCreateInfo where
        type FieldType "components" VkImageViewCreateInfo =
             VkComponentMapping
        type FieldOptional "components" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "components" VkImageViewCreateInfo =
             (40)
{-# LINE 4034 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "components" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "components" VkImageViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 4049 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "components" VkImageViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 4059 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "subresourceRange" VkImageViewCreateInfo where
        type FieldType "subresourceRange" VkImageViewCreateInfo =
             VkImageSubresourceRange
        type FieldOptional "subresourceRange" VkImageViewCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "subresourceRange" VkImageViewCreateInfo =
             (56)
{-# LINE 4068 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "subresourceRange" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "subresourceRange" VkImageViewCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 4083 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "subresourceRange" VkImageViewCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 4093 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

instance Show VkImageViewCreateInfo where
        showsPrec d x
          = showString "VkImageViewCreateInfo {" .
              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 "image = " .
                                  showsPrec d (getField @"image" x) .
                                    showString ", " .
                                      showString "viewType = " .
                                        showsPrec d (getField @"viewType" x) .
                                          showString ", " .
                                            showString "format = " .
                                              showsPrec d (getField @"format" x) .
                                                showString ", " .
                                                  showString "components = " .
                                                    showsPrec d (getField @"components" x) .
                                                      showString ", " .
                                                        showString "subresourceRange = " .
                                                          showsPrec d
                                                            (getField @"subresourceRange" x)
                                                            . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "usage" VkImageViewUsageCreateInfo where
        type FieldType "usage" VkImageViewUsageCreateInfo =
             VkImageUsageFlags
        type FieldOptional "usage" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "usage" VkImageViewUsageCreateInfo =
             (16)
{-# LINE 4253 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}
        type FieldIsArray "usage" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "usage" VkImageViewUsageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 4268 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "usage" VkImageViewUsageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 4278 "src-gen/Graphics/Vulkan/Types/Struct/Image.hsc" #-}

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

-- | Alias for `VkImageViewUsageCreateInfo`
type VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo