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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Surface
       (VkSurfaceCapabilities2EXT(..), VkSurfaceCapabilities2KHR(..),
        VkSurfaceCapabilitiesKHR(..), VkSurfaceFormat2KHR(..),
        VkSurfaceFormatKHR(..))
       where
import           Foreign.Storable                                  (Storable (..))
import           GHC.Base                                          (Addr#,
                                                                    ByteArray#,
                                                                    byteArrayContents#,
                                                                    plusAddr#)
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.Enum.Color                  (VkColorSpaceKHR)
import           Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR (VkCompositeAlphaFlagsKHR)
import           Graphics.Vulkan.Types.Enum.Format                 (VkFormat)
import           Graphics.Vulkan.Types.Enum.Image                  (VkImageUsageFlags)
import           Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
import           Graphics.Vulkan.Types.Enum.Surface                (VkSurfaceCounterFlagsEXT,
                                                                    VkSurfaceTransformFlagBitsKHR,
                                                                    VkSurfaceTransformFlagsKHR)
import           Graphics.Vulkan.Types.Struct.Extent               (VkExtent2D)
import           System.IO.Unsafe                                  (unsafeDupablePerformIO)

-- | > typedef struct VkSurfaceCapabilities2EXT {
--   >     VkStructureType sType;
--   >     void*                            pNext;
--   >     uint32_t                         minImageCount;
--   >     uint32_t                         maxImageCount;
--   >     VkExtent2D                       currentExtent;
--   >     VkExtent2D                       minImageExtent;
--   >     VkExtent2D                       maxImageExtent;
--   >     uint32_t                         maxImageArrayLayers;
--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
--   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
--   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
--   >     VkImageUsageFlags                supportedUsageFlags;
--   >     VkSurfaceCounterFlagsEXT supportedSurfaceCounters;
--   > } VkSurfaceCapabilities2EXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilities2EXT VkSurfaceCapabilities2EXT registry at www.khronos.org>
data VkSurfaceCapabilities2EXT = VkSurfaceCapabilities2EXT# Addr#
                                                            ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSurfaceCapabilities2EXT where
        type StructFields VkSurfaceCapabilities2EXT =
             '["sType", "pNext", "minImageCount", "maxImageCount", -- ' closing tick for hsc2hs
               "currentExtent", "minImageExtent", "maxImageExtent",
               "maxImageArrayLayers", "supportedTransforms", "currentTransform",
               "supportedCompositeAlpha", "supportedUsageFlags",
               "supportedSurfaceCounters"]
        type CUnionType VkSurfaceCapabilities2EXT = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSurfaceCapabilities2EXT = 'True -- ' closing tick for hsc2hs
        type StructExtends VkSurfaceCapabilities2EXT = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxImageCount" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 224 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxImageCount" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 234 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "currentExtent" VkSurfaceCapabilities2EXT where
        type FieldType "currentExtent" VkSurfaceCapabilities2EXT =
             VkExtent2D
        type FieldOptional "currentExtent" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "currentExtent" VkSurfaceCapabilities2EXT =
             (24)
{-# LINE 243 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "currentExtent" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "currentExtent" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 259 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "currentExtent" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 269 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minImageExtent" VkSurfaceCapabilities2EXT where
        type FieldType "minImageExtent" VkSurfaceCapabilities2EXT =
             VkExtent2D
        type FieldOptional "minImageExtent" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "minImageExtent" VkSurfaceCapabilities2EXT =
             (32)
{-# LINE 278 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "minImageExtent" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minImageExtent" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 294 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minImageExtent" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 304 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxImageExtent" VkSurfaceCapabilities2EXT where
        type FieldType "maxImageExtent" VkSurfaceCapabilities2EXT =
             VkExtent2D
        type FieldOptional "maxImageExtent" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "maxImageExtent" VkSurfaceCapabilities2EXT =
             (40)
{-# LINE 313 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "maxImageExtent" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxImageExtent" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 329 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxImageExtent" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 339 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 364 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 374 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedTransforms" VkSurfaceCapabilities2EXT where
        type FieldType "supportedTransforms" VkSurfaceCapabilities2EXT =
             VkSurfaceTransformFlagsKHR
        type FieldOptional "supportedTransforms" VkSurfaceCapabilities2EXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedTransforms" VkSurfaceCapabilities2EXT =
             (52)
{-# LINE 383 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedTransforms" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedTransforms" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 399 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedTransforms" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 409 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "currentTransform" VkSurfaceCapabilities2EXT where
        type FieldType "currentTransform" VkSurfaceCapabilities2EXT =
             VkSurfaceTransformFlagBitsKHR
        type FieldOptional "currentTransform" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "currentTransform" VkSurfaceCapabilities2EXT =
             (56)
{-# LINE 418 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "currentTransform" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "currentTransform" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 434 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "currentTransform" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 444 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT where
        type FieldType "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
             = VkCompositeAlphaFlagsKHR
        type FieldOptional "supportedCompositeAlpha"
               VkSurfaceCapabilities2EXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedCompositeAlpha"
               VkSurfaceCapabilities2EXT
             =
             (60)
{-# LINE 456 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedCompositeAlpha"
               VkSurfaceCapabilities2EXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (60))
{-# LINE 474 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (60)
{-# LINE 485 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
        type FieldType "supportedUsageFlags" VkSurfaceCapabilities2EXT =
             VkImageUsageFlags
        type FieldOptional "supportedUsageFlags" VkSurfaceCapabilities2EXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedUsageFlags" VkSurfaceCapabilities2EXT =
             (64)
{-# LINE 494 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedUsageFlags" VkSurfaceCapabilities2EXT =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 510 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 520 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT where
        type FieldType "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
             = VkSurfaceCounterFlagsEXT
        type FieldOptional "supportedSurfaceCounters"
               VkSurfaceCapabilities2EXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedSurfaceCounters"
               VkSurfaceCapabilities2EXT
             =
             (68)
{-# LINE 532 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedSurfaceCounters"
               VkSurfaceCapabilities2EXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (68)
{-# LINE 542 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (68))
{-# LINE 550 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (68)
{-# LINE 554 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (68)
{-# LINE 561 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance Show VkSurfaceCapabilities2EXT where
        showsPrec d x
          = showString "VkSurfaceCapabilities2EXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "minImageCount = " .
                            showsPrec d (getField @"minImageCount" x) .
                              showString ", " .
                                showString "maxImageCount = " .
                                  showsPrec d (getField @"maxImageCount" x) .
                                    showString ", " .
                                      showString "currentExtent = " .
                                        showsPrec d (getField @"currentExtent" x) .
                                          showString ", " .
                                            showString "minImageExtent = " .
                                              showsPrec d (getField @"minImageExtent" x) .
                                                showString ", " .
                                                  showString "maxImageExtent = " .
                                                    showsPrec d (getField @"maxImageExtent" x) .
                                                      showString ", " .
                                                        showString "maxImageArrayLayers = " .
                                                          showsPrec d
                                                            (getField @"maxImageArrayLayers" x)
                                                            .
                                                            showString ", " .
                                                              showString "supportedTransforms = " .
                                                                showsPrec d
                                                                  (getField @"supportedTransforms"
                                                                     x)
                                                                  .
                                                                  showString ", " .
                                                                    showString "currentTransform = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"currentTransform"
                                                                           x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "supportedCompositeAlpha = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"supportedCompositeAlpha"
                                                                                 x)
                                                                              .
                                                                              showString ", " .
                                                                                showString
                                                                                  "supportedUsageFlags = "
                                                                                  .
                                                                                  showsPrec d
                                                                                    (getField
                                                                                       @"supportedUsageFlags"
                                                                                       x)
                                                                                    .
                                                                                    showString ", "
                                                                                      .
                                                                                      showString
                                                                                        "supportedSurfaceCounters = "
                                                                                        .
                                                                                        showsPrec d
                                                                                          (getField
                                                                                             @"supportedSurfaceCounters"
                                                                                             x)
                                                                                          .
                                                                                          showChar
                                                                                            '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
        type FieldType "surfaceCapabilities" VkSurfaceCapabilities2KHR =
             VkSurfaceCapabilitiesKHR
        type FieldOptional "surfaceCapabilities" VkSurfaceCapabilities2KHR
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "surfaceCapabilities" VkSurfaceCapabilities2KHR =
             (16)
{-# LINE 763 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "surfaceCapabilities" VkSurfaceCapabilities2KHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 779 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 789 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

-- | > typedef struct VkSurfaceCapabilitiesKHR {
--   >     uint32_t                         minImageCount;
--   >     uint32_t                         maxImageCount;
--   >     VkExtent2D                       currentExtent;
--   >     VkExtent2D                       minImageExtent;
--   >     VkExtent2D                       maxImageExtent;
--   >     uint32_t                         maxImageArrayLayers;
--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
--   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
--   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
--   >     VkImageUsageFlags                supportedUsageFlags;
--   > } VkSurfaceCapabilitiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilitiesKHR VkSurfaceCapabilitiesKHR registry at www.khronos.org>
data VkSurfaceCapabilitiesKHR = VkSurfaceCapabilitiesKHR# Addr#
                                                          ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkSurfaceCapabilitiesKHR where
        sizeOf ~_ = (52)
{-# LINE 833 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSurfaceCapabilitiesKHR where
        type StructFields VkSurfaceCapabilitiesKHR =
             '["minImageCount", "maxImageCount", "currentExtent", -- ' closing tick for hsc2hs
               "minImageExtent", "maxImageExtent", "maxImageArrayLayers",
               "supportedTransforms", "currentTransform",
               "supportedCompositeAlpha", "supportedUsageFlags"]
        type CUnionType VkSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSurfaceCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkSurfaceCapabilitiesKHR = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minImageCount" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 890 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minImageCount" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 900 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxImageCount" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 923 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxImageCount" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 933 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "currentExtent" VkSurfaceCapabilitiesKHR where
        type FieldType "currentExtent" VkSurfaceCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "currentExtent" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "currentExtent" VkSurfaceCapabilitiesKHR =
             (8)
{-# LINE 942 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "currentExtent" VkSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "currentExtent" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 957 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "currentExtent" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 967 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minImageExtent" VkSurfaceCapabilitiesKHR where
        type FieldType "minImageExtent" VkSurfaceCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "minImageExtent" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "minImageExtent" VkSurfaceCapabilitiesKHR =
             (16)
{-# LINE 976 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "minImageExtent" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minImageExtent" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 992 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minImageExtent" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1002 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxImageExtent" VkSurfaceCapabilitiesKHR where
        type FieldType "maxImageExtent" VkSurfaceCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "maxImageExtent" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "maxImageExtent" VkSurfaceCapabilitiesKHR =
             (24)
{-# LINE 1011 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "maxImageExtent" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxImageExtent" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1027 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxImageExtent" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1037 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1062 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1072 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedTransforms" VkSurfaceCapabilitiesKHR where
        type FieldType "supportedTransforms" VkSurfaceCapabilitiesKHR =
             VkSurfaceTransformFlagsKHR
        type FieldOptional "supportedTransforms" VkSurfaceCapabilitiesKHR =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedTransforms" VkSurfaceCapabilitiesKHR =
             (36)
{-# LINE 1081 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedTransforms" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedTransforms" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 1097 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedTransforms" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 1107 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "currentTransform" VkSurfaceCapabilitiesKHR where
        type FieldType "currentTransform" VkSurfaceCapabilitiesKHR =
             VkSurfaceTransformFlagBitsKHR
        type FieldOptional "currentTransform" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "currentTransform" VkSurfaceCapabilitiesKHR =
             (40)
{-# LINE 1116 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "currentTransform" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "currentTransform" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 1132 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "currentTransform" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 1142 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR where
        type FieldType "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR =
             VkCompositeAlphaFlagsKHR
        type FieldOptional "supportedCompositeAlpha"
               VkSurfaceCapabilitiesKHR
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
             =
             (44)
{-# LINE 1153 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedCompositeAlpha"
               VkSurfaceCapabilitiesKHR
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 1171 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 1182 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
        type FieldType "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
             VkImageUsageFlags
        type FieldOptional "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
             (48)
{-# LINE 1191 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 1207 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 1217 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance Show VkSurfaceCapabilitiesKHR where
        showsPrec d x
          = showString "VkSurfaceCapabilitiesKHR {" .
              showString "minImageCount = " .
                showsPrec d (getField @"minImageCount" x) .
                  showString ", " .
                    showString "maxImageCount = " .
                      showsPrec d (getField @"maxImageCount" x) .
                        showString ", " .
                          showString "currentExtent = " .
                            showsPrec d (getField @"currentExtent" x) .
                              showString ", " .
                                showString "minImageExtent = " .
                                  showsPrec d (getField @"minImageExtent" x) .
                                    showString ", " .
                                      showString "maxImageExtent = " .
                                        showsPrec d (getField @"maxImageExtent" x) .
                                          showString ", " .
                                            showString "maxImageArrayLayers = " .
                                              showsPrec d (getField @"maxImageArrayLayers" x) .
                                                showString ", " .
                                                  showString "supportedTransforms = " .
                                                    showsPrec d (getField @"supportedTransforms" x)
                                                      .
                                                      showString ", " .
                                                        showString "currentTransform = " .
                                                          showsPrec d
                                                            (getField @"currentTransform" x)
                                                            .
                                                            showString ", " .
                                                              showString
                                                                "supportedCompositeAlpha = "
                                                                .
                                                                showsPrec d
                                                                  (getField
                                                                     @"supportedCompositeAlpha"
                                                                     x)
                                                                  .
                                                                  showString ", " .
                                                                    showString
                                                                      "supportedUsageFlags = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"supportedUsageFlags"
                                                                           x)
                                                                        . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "surfaceFormat" VkSurfaceFormat2KHR where
        type FieldType "surfaceFormat" VkSurfaceFormat2KHR =
             VkSurfaceFormatKHR
        type FieldOptional "surfaceFormat" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "surfaceFormat" VkSurfaceFormat2KHR =
             (16)
{-# LINE 1389 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "surfaceFormat" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "surfaceFormat" VkSurfaceFormat2KHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1404 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "surfaceFormat" VkSurfaceFormat2KHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1414 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

-- | > typedef struct VkSurfaceFormatKHR {
--   >     VkFormat                         format;
--   >     VkColorSpaceKHR                  colorSpace;
--   > } VkSurfaceFormatKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceFormatKHR VkSurfaceFormatKHR registry at www.khronos.org>
data VkSurfaceFormatKHR = VkSurfaceFormatKHR# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSurfaceFormatKHR where
        type StructFields VkSurfaceFormatKHR = '["format", "colorSpace"] -- ' closing tick for hsc2hs
        type CUnionType VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSurfaceFormatKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkSurfaceFormatKHR = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "format" VkSurfaceFormatKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1499 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "format" VkSurfaceFormatKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1509 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "colorSpace" VkSurfaceFormatKHR where
        type FieldType "colorSpace" VkSurfaceFormatKHR = VkColorSpaceKHR
        type FieldOptional "colorSpace" VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "colorSpace" VkSurfaceFormatKHR =
             (4)
{-# LINE 1516 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
        type FieldIsArray "colorSpace" VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "colorSpace" VkSurfaceFormatKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1530 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "colorSpace" VkSurfaceFormatKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1540 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}

instance Show VkSurfaceFormatKHR where
        showsPrec d x
          = showString "VkSurfaceFormatKHR {" .
              showString "format = " .
                showsPrec d (getField @"format" x) .
                  showString ", " .
                    showString "colorSpace = " .
                      showsPrec d (getField @"colorSpace" x) . showChar '}'