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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Display
       (VkDisplayEventInfoEXT(..), VkDisplayModeCreateInfoKHR(..),
        VkDisplayModeParametersKHR(..), VkDisplayModePropertiesKHR(..),
        VkDisplayPlaneCapabilitiesKHR(..), VkDisplayPlanePropertiesKHR(..),
        VkDisplayPowerInfoEXT(..), VkDisplayPresentInfoKHR(..),
        VkDisplayPropertiesKHR(..), VkDisplaySurfaceCreateInfoKHR(..))
       where
import           Foreign.Storable                         (Storable (..))
import           GHC.Base                                 (Addr#, ByteArray#,
                                                           byteArrayContents#,
                                                           plusAddr#)
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.BaseTypes          (VkBool32)
import           Graphics.Vulkan.Types.Bitmasks           (VkDisplayModeCreateFlagsKHR,
                                                           VkDisplaySurfaceCreateFlagsKHR)
import           Graphics.Vulkan.Types.Enum.Display       (VkDisplayEventTypeEXT,
                                                           VkDisplayPlaneAlphaFlagBitsKHR,
                                                           VkDisplayPlaneAlphaFlagsKHR,
                                                           VkDisplayPowerStateEXT)
import           Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import           Graphics.Vulkan.Types.Enum.Surface       (VkSurfaceTransformFlagBitsKHR,
                                                           VkSurfaceTransformFlagsKHR)
import           Graphics.Vulkan.Types.Handles            (VkDisplayKHR,
                                                           VkDisplayModeKHR)
import           Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D)
import           Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D)
import           Graphics.Vulkan.Types.Struct.Present     (VkPresentInfoKHR)
import           Graphics.Vulkan.Types.Struct.Rect        (VkRect2D)
import           System.IO.Unsafe                         (unsafeDupablePerformIO)

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "displayEvent" VkDisplayEventInfoEXT where
        type FieldType "displayEvent" VkDisplayEventInfoEXT =
             VkDisplayEventTypeEXT
        type FieldOptional "displayEvent" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
        type FieldOffset "displayEvent" VkDisplayEventInfoEXT =
             (16)
{-# LINE 165 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "displayEvent" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "displayEvent" VkDisplayEventInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 180 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "displayEvent" VkDisplayEventInfoEXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 190 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "parameters" VkDisplayModeCreateInfoKHR where
        type FieldType "parameters" VkDisplayModeCreateInfoKHR =
             VkDisplayModeParametersKHR
        type FieldOptional "parameters" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "parameters" VkDisplayModeCreateInfoKHR =
             (20)
{-# LINE 366 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "parameters" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "parameters" VkDisplayModeCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 381 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "parameters" VkDisplayModeCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 391 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

-- | > typedef struct VkDisplayModeParametersKHR {
--   >     VkExtent2D                       visibleRegion;
--   >     uint32_t                         refreshRate;
--   > } VkDisplayModeParametersKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeParametersKHR VkDisplayModeParametersKHR registry at www.khronos.org>
data VkDisplayModeParametersKHR = VkDisplayModeParametersKHR# Addr#
                                                              ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

instance {-# OVERLAPPING #-}
         HasField "visibleRegion" VkDisplayModeParametersKHR where
        type FieldType "visibleRegion" VkDisplayModeParametersKHR =
             VkExtent2D
        type FieldOptional "visibleRegion" VkDisplayModeParametersKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "visibleRegion" VkDisplayModeParametersKHR =
             (0)
{-# LINE 472 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "visibleRegion" VkDisplayModeParametersKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "visibleRegion" VkDisplayModeParametersKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 488 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "visibleRegion" VkDisplayModeParametersKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 498 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "refreshRate" VkDisplayModeParametersKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 521 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "refreshRate" VkDisplayModeParametersKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 531 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplayModeParametersKHR where
        showsPrec d x
          = showString "VkDisplayModeParametersKHR {" .
              showString "visibleRegion = " .
                showsPrec d (getField @"visibleRegion" x) .
                  showString ", " .
                    showString "refreshRate = " .
                      showsPrec d (getField @"refreshRate" x) . showChar '}'

-- | > typedef struct VkDisplayModePropertiesKHR {
--   >     VkDisplayModeKHR                 displayMode;
--   >     VkDisplayModeParametersKHR       parameters;
--   > } VkDisplayModePropertiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModePropertiesKHR VkDisplayModePropertiesKHR registry at www.khronos.org>
data VkDisplayModePropertiesKHR = VkDisplayModePropertiesKHR# Addr#
                                                              ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDisplayModePropertiesKHR where
        type StructFields VkDisplayModePropertiesKHR =
             '["displayMode", "parameters"] -- ' closing tick for hsc2hs
        type CUnionType VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDisplayModePropertiesKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkDisplayModePropertiesKHR = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "displayMode" VkDisplayModePropertiesKHR where
        type FieldType "displayMode" VkDisplayModePropertiesKHR =
             VkDisplayModeKHR
        type FieldOptional "displayMode" VkDisplayModePropertiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "displayMode" VkDisplayModePropertiesKHR =
             (0)
{-# LINE 606 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "displayMode" VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "displayMode" VkDisplayModePropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 621 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "displayMode" VkDisplayModePropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 631 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "parameters" VkDisplayModePropertiesKHR where
        type FieldType "parameters" VkDisplayModePropertiesKHR =
             VkDisplayModeParametersKHR
        type FieldOptional "parameters" VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "parameters" VkDisplayModePropertiesKHR =
             (8)
{-# LINE 639 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "parameters" VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "parameters" VkDisplayModePropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 654 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "parameters" VkDisplayModePropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 664 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplayModePropertiesKHR where
        showsPrec d x
          = showString "VkDisplayModePropertiesKHR {" .
              showString "displayMode = " .
                showsPrec d (getField @"displayMode" x) .
                  showString ", " .
                    showString "parameters = " .
                      showsPrec d (getField @"parameters" x) . showChar '}'

-- | > typedef struct VkDisplayPlaneCapabilitiesKHR {
--   >     VkDisplayPlaneAlphaFlagsKHR      supportedAlpha;
--   >     VkOffset2D                       minSrcPosition;
--   >     VkOffset2D                       maxSrcPosition;
--   >     VkExtent2D                       minSrcExtent;
--   >     VkExtent2D                       maxSrcExtent;
--   >     VkOffset2D                       minDstPosition;
--   >     VkOffset2D                       maxDstPosition;
--   >     VkExtent2D                       minDstExtent;
--   >     VkExtent2D                       maxDstExtent;
--   > } VkDisplayPlaneCapabilitiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneCapabilitiesKHR VkDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
data VkDisplayPlaneCapabilitiesKHR = VkDisplayPlaneCapabilitiesKHR# Addr#
                                                                    ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDisplayPlaneCapabilitiesKHR where
        type StructFields VkDisplayPlaneCapabilitiesKHR =
             '["supportedAlpha", "minSrcPosition", "maxSrcPosition", -- ' closing tick for hsc2hs
               "minSrcExtent", "maxSrcExtent", "minDstPosition", "maxDstPosition",
               "minDstExtent", "maxDstExtent"]
        type CUnionType VkDisplayPlaneCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDisplayPlaneCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkDisplayPlaneCapabilitiesKHR = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
             VkDisplayPlaneAlphaFlagsKHR
        type FieldOptional "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
             (0)
{-# LINE 749 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 765 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 775 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             VkOffset2D
        type FieldOptional "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             (4)
{-# LINE 784 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 800 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 810 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             VkOffset2D
        type FieldOptional "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             (12)
{-# LINE 819 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 835 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 845 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             (20)
{-# LINE 854 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 870 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 880 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             (28)
{-# LINE 889 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 905 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 915 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
             VkOffset2D
        type FieldOptional "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
             (36)
{-# LINE 924 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 940 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 950 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
             VkOffset2D
        type FieldOptional "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
             (44)
{-# LINE 959 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 975 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 985 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
             (52)
{-# LINE 994 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 1010 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 1020 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
        type FieldType "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
             VkExtent2D
        type FieldOptional "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
             (60)
{-# LINE 1029 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (60))
{-# LINE 1045 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (60)
{-# LINE 1055 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplayPlaneCapabilitiesKHR where
        showsPrec d x
          = showString "VkDisplayPlaneCapabilitiesKHR {" .
              showString "supportedAlpha = " .
                showsPrec d (getField @"supportedAlpha" x) .
                  showString ", " .
                    showString "minSrcPosition = " .
                      showsPrec d (getField @"minSrcPosition" x) .
                        showString ", " .
                          showString "maxSrcPosition = " .
                            showsPrec d (getField @"maxSrcPosition" x) .
                              showString ", " .
                                showString "minSrcExtent = " .
                                  showsPrec d (getField @"minSrcExtent" x) .
                                    showString ", " .
                                      showString "maxSrcExtent = " .
                                        showsPrec d (getField @"maxSrcExtent" x) .
                                          showString ", " .
                                            showString "minDstPosition = " .
                                              showsPrec d (getField @"minDstPosition" x) .
                                                showString ", " .
                                                  showString "maxDstPosition = " .
                                                    showsPrec d (getField @"maxDstPosition" x) .
                                                      showString ", " .
                                                        showString "minDstExtent = " .
                                                          showsPrec d (getField @"minDstExtent" x) .
                                                            showString ", " .
                                                              showString "maxDstExtent = " .
                                                                showsPrec d
                                                                  (getField @"maxDstExtent" x)
                                                                  . showChar '}'

-- | > typedef struct VkDisplayPlanePropertiesKHR {
--   >     VkDisplayKHR                     currentDisplay;
--   >     uint32_t                         currentStackIndex;
--   > } VkDisplayPlanePropertiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlanePropertiesKHR VkDisplayPlanePropertiesKHR registry at www.khronos.org>
data VkDisplayPlanePropertiesKHR = VkDisplayPlanePropertiesKHR# Addr#
                                                                ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDisplayPlanePropertiesKHR where
        type StructFields VkDisplayPlanePropertiesKHR =
             '["currentDisplay", "currentStackIndex"] -- ' closing tick for hsc2hs
        type CUnionType VkDisplayPlanePropertiesKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDisplayPlanePropertiesKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkDisplayPlanePropertiesKHR = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "currentDisplay" VkDisplayPlanePropertiesKHR where
        type FieldType "currentDisplay" VkDisplayPlanePropertiesKHR =
             VkDisplayKHR
        type FieldOptional "currentDisplay" VkDisplayPlanePropertiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "currentDisplay" VkDisplayPlanePropertiesKHR =
             (0)
{-# LINE 1153 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "currentDisplay" VkDisplayPlanePropertiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "currentDisplay" VkDisplayPlanePropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1169 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "currentDisplay" VkDisplayPlanePropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1179 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "currentStackIndex" VkDisplayPlanePropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1204 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "currentStackIndex" VkDisplayPlanePropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1214 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplayPlanePropertiesKHR where
        showsPrec d x
          = showString "VkDisplayPlanePropertiesKHR {" .
              showString "currentDisplay = " .
                showsPrec d (getField @"currentDisplay" x) .
                  showString ", " .
                    showString "currentStackIndex = " .
                      showsPrec d (getField @"currentStackIndex" x) . showChar '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "powerState" VkDisplayPowerInfoEXT where
        type FieldType "powerState" VkDisplayPowerInfoEXT =
             VkDisplayPowerStateEXT
        type FieldOptional "powerState" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
        type FieldOffset "powerState" VkDisplayPowerInfoEXT =
             (16)
{-# LINE 1348 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "powerState" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "powerState" VkDisplayPowerInfoEXT where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1363 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "powerState" VkDisplayPowerInfoEXT where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1373 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDisplayPresentInfoKHR where
        type StructFields VkDisplayPresentInfoKHR =
             '["sType", "pNext", "srcRect", "dstRect", "persistent"] -- ' closing tick for hsc2hs
        type CUnionType VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDisplayPresentInfoKHR = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "srcRect" VkDisplayPresentInfoKHR where
        type FieldType "srcRect" VkDisplayPresentInfoKHR = VkRect2D
        type FieldOptional "srcRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcRect" VkDisplayPresentInfoKHR =
             (16)
{-# LINE 1511 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "srcRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "srcRect" VkDisplayPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1526 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "srcRect" VkDisplayPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1536 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstRect" VkDisplayPresentInfoKHR where
        type FieldType "dstRect" VkDisplayPresentInfoKHR = VkRect2D
        type FieldOptional "dstRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstRect" VkDisplayPresentInfoKHR =
             (32)
{-# LINE 1543 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "dstRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "dstRect" VkDisplayPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1558 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "dstRect" VkDisplayPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1568 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "persistent" VkDisplayPresentInfoKHR where
        type FieldType "persistent" VkDisplayPresentInfoKHR = VkBool32
        type FieldOptional "persistent" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "persistent" VkDisplayPresentInfoKHR =
             (48)
{-# LINE 1575 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "persistent" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "persistent" VkDisplayPresentInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 1590 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "persistent" VkDisplayPresentInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 1600 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplayPresentInfoKHR where
        showsPrec d x
          = showString "VkDisplayPresentInfoKHR {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "srcRect = " .
                            showsPrec d (getField @"srcRect" x) .
                              showString ", " .
                                showString "dstRect = " .
                                  showsPrec d (getField @"dstRect" x) .
                                    showString ", " .
                                      showString "persistent = " .
                                        showsPrec d (getField @"persistent" x) . showChar '}'

-- | > typedef struct VkDisplayPropertiesKHR {
--   >     VkDisplayKHR                     display;
--   >     const char*                      displayName;
--   >     VkExtent2D                       physicalDimensions;
--   >     VkExtent2D                       physicalResolution;
--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
--   >     VkBool32                         planeReorderPossible;
--   >     VkBool32                         persistentContent;
--   > } VkDisplayPropertiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPropertiesKHR VkDisplayPropertiesKHR registry at www.khronos.org>
data VkDisplayPropertiesKHR = VkDisplayPropertiesKHR# Addr#
                                                      ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDisplayPropertiesKHR where
        type StructFields VkDisplayPropertiesKHR =
             '["display", "displayName", "physicalDimensions", -- ' closing tick for hsc2hs
               "physicalResolution", "supportedTransforms",
               "planeReorderPossible", "persistentContent"]
        type CUnionType VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDisplayPropertiesKHR = 'True -- ' closing tick for hsc2hs
        type StructExtends VkDisplayPropertiesKHR = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "display" VkDisplayPropertiesKHR where
        type FieldType "display" VkDisplayPropertiesKHR = VkDisplayKHR
        type FieldOptional "display" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "display" VkDisplayPropertiesKHR =
             (0)
{-# LINE 1686 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "display" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "display" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1700 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "display" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1710 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "displayName" VkDisplayPropertiesKHR where
        type FieldType "displayName" VkDisplayPropertiesKHR = CString
        type FieldOptional "displayName" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
        type FieldOffset "displayName" VkDisplayPropertiesKHR =
             (8)
{-# LINE 1717 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "displayName" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "displayName" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1732 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "displayName" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1742 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "physicalDimensions" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1767 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "physicalDimensions" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1777 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "physicalResolution" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1802 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "physicalResolution" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1812 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

instance {-# OVERLAPPING #-}
         CanReadField "supportedTransforms" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1837 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "supportedTransforms" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1847 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "planeReorderPossible" VkDisplayPropertiesKHR where
        type FieldType "planeReorderPossible" VkDisplayPropertiesKHR =
             VkBool32
        type FieldOptional "planeReorderPossible" VkDisplayPropertiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "planeReorderPossible" VkDisplayPropertiesKHR =
             (36)
{-# LINE 1856 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "planeReorderPossible" VkDisplayPropertiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "planeReorderPossible" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 1872 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "planeReorderPossible" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 1882 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "persistentContent" VkDisplayPropertiesKHR where
        type FieldType "persistentContent" VkDisplayPropertiesKHR =
             VkBool32
        type FieldOptional "persistentContent" VkDisplayPropertiesKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "persistentContent" VkDisplayPropertiesKHR =
             (40)
{-# LINE 1891 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "persistentContent" VkDisplayPropertiesKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "persistentContent" VkDisplayPropertiesKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 1907 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "persistentContent" VkDisplayPropertiesKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 1917 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplayPropertiesKHR where
        showsPrec d x
          = showString "VkDisplayPropertiesKHR {" .
              showString "display = " .
                showsPrec d (getField @"display" x) .
                  showString ", " .
                    showString "displayName = " .
                      showsPrec d (getField @"displayName" x) .
                        showString ", " .
                          showString "physicalDimensions = " .
                            showsPrec d (getField @"physicalDimensions" x) .
                              showString ", " .
                                showString "physicalResolution = " .
                                  showsPrec d (getField @"physicalResolution" x) .
                                    showString ", " .
                                      showString "supportedTransforms = " .
                                        showsPrec d (getField @"supportedTransforms" x) .
                                          showString ", " .
                                            showString "planeReorderPossible = " .
                                              showsPrec d (getField @"planeReorderPossible" x) .
                                                showString ", " .
                                                  showString "persistentContent = " .
                                                    showsPrec d (getField @"persistentContent" x) .
                                                      showChar '}'

-- | > typedef struct VkDisplaySurfaceCreateInfoKHR {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkDisplaySurfaceCreateFlagsKHR   flags;
--   >     VkDisplayModeKHR                 displayMode;
--   >     uint32_t                         planeIndex;
--   >     uint32_t                         planeStackIndex;
--   >     VkSurfaceTransformFlagBitsKHR    transform;
--   >     float                            globalAlpha;
--   >     VkDisplayPlaneAlphaFlagBitsKHR   alphaMode;
--   >     VkExtent2D                       imageExtent;
--   > } VkDisplaySurfaceCreateInfoKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplaySurfaceCreateInfoKHR VkDisplaySurfaceCreateInfoKHR registry at www.khronos.org>
data VkDisplaySurfaceCreateInfoKHR = VkDisplaySurfaceCreateInfoKHR# Addr#
                                                                    ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkDisplaySurfaceCreateInfoKHR where
        type StructFields VkDisplaySurfaceCreateInfoKHR =
             '["sType", "pNext", "flags", "displayMode", "planeIndex", -- ' closing tick for hsc2hs
               "planeStackIndex", "transform", "globalAlpha", "alphaMode",
               "imageExtent"]
        type CUnionType VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
        type StructExtends VkDisplaySurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "displayMode" VkDisplaySurfaceCreateInfoKHR where
        type FieldType "displayMode" VkDisplaySurfaceCreateInfoKHR =
             VkDisplayModeKHR
        type FieldOptional "displayMode" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "displayMode" VkDisplaySurfaceCreateInfoKHR =
             (24)
{-# LINE 2117 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "displayMode" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "displayMode" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2133 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "displayMode" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2143 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2167 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2177 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 2202 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 2212 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "transform" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 2237 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "transform" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 2247 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
        type FieldType "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
             Float
{-# LINE 2252 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldOptional "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
             (44)
{-# LINE 2256 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 2272 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 2282 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
        type FieldType "alphaMode" VkDisplaySurfaceCreateInfoKHR =
             VkDisplayPlaneAlphaFlagBitsKHR
        type FieldOptional "alphaMode" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "alphaMode" VkDisplaySurfaceCreateInfoKHR =
             (48)
{-# LINE 2291 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "alphaMode" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 2307 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 2317 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
        type FieldType "imageExtent" VkDisplaySurfaceCreateInfoKHR =
             VkExtent2D
        type FieldOptional "imageExtent" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "imageExtent" VkDisplaySurfaceCreateInfoKHR =
             (52)
{-# LINE 2326 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}
        type FieldIsArray "imageExtent" VkDisplaySurfaceCreateInfoKHR =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 2342 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 2352 "src-gen/Graphics/Vulkan/Types/Struct/Display.hsc" #-}

instance Show VkDisplaySurfaceCreateInfoKHR where
        showsPrec d x
          = showString "VkDisplaySurfaceCreateInfoKHR {" .
              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 "displayMode = " .
                                  showsPrec d (getField @"displayMode" x) .
                                    showString ", " .
                                      showString "planeIndex = " .
                                        showsPrec d (getField @"planeIndex" x) .
                                          showString ", " .
                                            showString "planeStackIndex = " .
                                              showsPrec d (getField @"planeStackIndex" x) .
                                                showString ", " .
                                                  showString "transform = " .
                                                    showsPrec d (getField @"transform" x) .
                                                      showString ", " .
                                                        showString "globalAlpha = " .
                                                          showsPrec d (getField @"globalAlpha" x) .
                                                            showString ", " .
                                                              showString "alphaMode = " .
                                                                showsPrec d
                                                                  (getField @"alphaMode" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString "imageExtent = " .
                                                                      showsPrec d
                                                                        (getField @"imageExtent" x)
                                                                        . showChar '}'