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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Memory
       (VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
        VkMemoryAllocateInfo, VkMemoryBarrier,
        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfoKHR,
        VkMemoryDedicatedRequirements, VkMemoryDedicatedRequirementsKHR,
        VkMemoryFdPropertiesKHR, VkMemoryGetFdInfoKHR, VkMemoryHeap,
        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements,
        VkMemoryRequirements2, VkMemoryRequirements2KHR, VkMemoryType)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.BaseTypes          (VkBool32, VkDeviceSize)
import Graphics.Vulkan.Types.Enum.AccessFlags   (VkAccessFlags)
import Graphics.Vulkan.Types.Enum.External      (VkExternalMemoryHandleTypeFlagBits)
import Graphics.Vulkan.Types.Enum.Memory        (VkMemoryAllocateFlags,
                                                 VkMemoryHeapFlags,
                                                 VkMemoryPropertyFlags)
import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
                                                 VkImage)

-- | > typedef struct VkMemoryAllocateFlagsInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkMemoryAllocateFlags flags;
--   >     uint32_t                         deviceMask;
--   > } VkMemoryAllocateFlagsInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfo registry at www.khronos.org>
type VkMemoryAllocateFlagsInfo =
     VkStruct VkMemoryAllocateFlagsInfo' -- ' closing tick for hsc2hs

data VkMemoryAllocateFlagsInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryAllocateFlagsInfo where
    type StructRep VkMemoryAllocateFlagsInfo =
         'StructMeta "VkMemoryAllocateFlagsInfo" VkMemoryAllocateFlagsInfo -- ' closing tick for hsc2hs
           (24)
{-# LINE 46 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 47 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 49 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 54 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkMemoryAllocateFlags 'True
                                                             (16)
{-# LINE 59 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "deviceMask" Word32 'False
                                                    (20)
{-# LINE 64 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkMemoryAllocateFlagsInfo`
type VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo

-- | > typedef struct VkMemoryAllocateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkDeviceSize           allocationSize;
--   >     uint32_t               memoryTypeIndex;
--   > } VkMemoryAllocateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryAllocateInfo VkMemoryAllocateInfo registry at www.khronos.org>
type VkMemoryAllocateInfo = VkStruct VkMemoryAllocateInfo' -- ' closing tick for hsc2hs

data VkMemoryAllocateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryAllocateInfo where
    type StructRep VkMemoryAllocateInfo =
         'StructMeta "VkMemoryAllocateInfo" VkMemoryAllocateInfo  -- ' closing tick for hsc2hs
                                                                 (32)
{-# LINE 90 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 91 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 93 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 98 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "allocationSize" VkDeviceSize 'False
                                                              (16)
{-# LINE 103 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memoryTypeIndex" Word32 'False
                                                         (24)
{-# LINE 108 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryBarrier {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkAccessFlags          srcAccessMask;
--   >     VkAccessFlags          dstAccessMask;
--   > } VkMemoryBarrier;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryBarrier VkMemoryBarrier registry at www.khronos.org>
type VkMemoryBarrier = VkStruct VkMemoryBarrier' -- ' closing tick for hsc2hs

data VkMemoryBarrier' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryBarrier where
    type StructRep VkMemoryBarrier =
         'StructMeta "VkMemoryBarrier" VkMemoryBarrier  -- ' closing tick for hsc2hs
                                                       (24)
{-# LINE 131 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 132 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 134 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 139 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "srcAccessMask" VkAccessFlags 'True
                                                             (16)
{-# LINE 144 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "dstAccessMask" VkAccessFlags 'True
                                                             (20)
{-# LINE 149 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryDedicatedAllocateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkImage          image;
--   >     VkBuffer         buffer;
--   > } VkMemoryDedicatedAllocateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfo registry at www.khronos.org>
type VkMemoryDedicatedAllocateInfo =
     VkStruct VkMemoryDedicatedAllocateInfo' -- ' closing tick for hsc2hs

data VkMemoryDedicatedAllocateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryDedicatedAllocateInfo where
    type StructRep VkMemoryDedicatedAllocateInfo =
         'StructMeta "VkMemoryDedicatedAllocateInfo" -- ' closing tick for hsc2hs
           VkMemoryDedicatedAllocateInfo
           (32)
{-# LINE 174 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 175 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 177 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 182 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "image" VkImage 'True
                                               (16)
{-# LINE 187 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "buffer" VkBuffer 'True
                                                 (24)
{-# LINE 192 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkMemoryDedicatedAllocateInfo`
type VkMemoryDedicatedAllocateInfoKHR =
     VkMemoryDedicatedAllocateInfo

-- | > typedef struct VkMemoryDedicatedRequirements {
--   >     VkStructureType sType;
--   >     void*                            pNext;
--   >     VkBool32                         prefersDedicatedAllocation;
--   >     VkBool32                         requiresDedicatedAllocation;
--   > } VkMemoryDedicatedRequirements;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryDedicatedRequirements VkMemoryDedicatedRequirements registry at www.khronos.org>
type VkMemoryDedicatedRequirements =
     VkStruct VkMemoryDedicatedRequirements' -- ' closing tick for hsc2hs

data VkMemoryDedicatedRequirements' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryDedicatedRequirements where
    type StructRep VkMemoryDedicatedRequirements =
         'StructMeta "VkMemoryDedicatedRequirements" -- ' closing tick for hsc2hs
           VkMemoryDedicatedRequirements
           (24)
{-# LINE 221 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 222 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 224 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 229 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "prefersDedicatedAllocation" VkBool32 'False
                                                                      (16)
{-# LINE 234 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "requiresDedicatedAllocation" VkBool32 'False
                                                                       (20)
{-# LINE 239 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[VkMemoryRequirements2] -- ' closing tick for hsc2hs

-- | Alias for `VkMemoryDedicatedRequirements`
type VkMemoryDedicatedRequirementsKHR =
     VkMemoryDedicatedRequirements

-- | > typedef struct VkMemoryFdPropertiesKHR {
--   >     VkStructureType sType;
--   >     void*                            pNext;
--   >     uint32_t                         memoryTypeBits;
--   > } VkMemoryFdPropertiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryFdPropertiesKHR VkMemoryFdPropertiesKHR registry at www.khronos.org>
type VkMemoryFdPropertiesKHR = VkStruct VkMemoryFdPropertiesKHR' -- ' closing tick for hsc2hs

data VkMemoryFdPropertiesKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryFdPropertiesKHR where
    type StructRep VkMemoryFdPropertiesKHR =
         'StructMeta "VkMemoryFdPropertiesKHR" VkMemoryFdPropertiesKHR -- ' closing tick for hsc2hs
           (24)
{-# LINE 265 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 266 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 268 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 273 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memoryTypeBits" Word32 'False
                                                        (16)
{-# LINE 278 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryGetFdInfoKHR {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkDeviceMemory                   memory;
--   >     VkExternalMemoryHandleTypeFlagBits handleType;
--   > } VkMemoryGetFdInfoKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetFdInfoKHR VkMemoryGetFdInfoKHR registry at www.khronos.org>
type VkMemoryGetFdInfoKHR = VkStruct VkMemoryGetFdInfoKHR' -- ' closing tick for hsc2hs

data VkMemoryGetFdInfoKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryGetFdInfoKHR where
    type StructRep VkMemoryGetFdInfoKHR =
         'StructMeta "VkMemoryGetFdInfoKHR" VkMemoryGetFdInfoKHR  -- ' closing tick for hsc2hs
                                                                 (32)
{-# LINE 301 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 302 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 304 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 309 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memory" VkDeviceMemory 'False
                                                        (16)
{-# LINE 314 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'False
                (24)
{-# LINE 319 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryHeap {
--   >     VkDeviceSize           size;
--   >     VkMemoryHeapFlags      flags;
--   > } VkMemoryHeap;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryHeap VkMemoryHeap registry at www.khronos.org>
type VkMemoryHeap = VkStruct VkMemoryHeap' -- ' closing tick for hsc2hs

data VkMemoryHeap' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryHeap where
    type StructRep VkMemoryHeap =
         'StructMeta "VkMemoryHeap" VkMemoryHeap  -- ' closing tick for hsc2hs
                                                 (16)
{-# LINE 340 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 341 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "size" VkDeviceSize 'False  -- ' closing tick for hsc2hs
                                                    (0)
{-# LINE 343 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkMemoryHeapFlags 'True
                                                         (8)
{-# LINE 348 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryHostPointerPropertiesEXT {
--   >     VkStructureType sType;
--   >     void* pNext;
--   >     uint32_t memoryTypeBits;
--   > } VkMemoryHostPointerPropertiesEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryHostPointerPropertiesEXT VkMemoryHostPointerPropertiesEXT registry at www.khronos.org>
type VkMemoryHostPointerPropertiesEXT =
     VkStruct VkMemoryHostPointerPropertiesEXT' -- ' closing tick for hsc2hs

data VkMemoryHostPointerPropertiesEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryHostPointerPropertiesEXT where
    type StructRep VkMemoryHostPointerPropertiesEXT =
         'StructMeta "VkMemoryHostPointerPropertiesEXT" -- ' closing tick for hsc2hs
           VkMemoryHostPointerPropertiesEXT
           (24)
{-# LINE 372 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 373 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 375 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 380 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memoryTypeBits" Word32 'False
                                                        (16)
{-# LINE 385 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryRequirements {
--   >     VkDeviceSize           size;
--   >     VkDeviceSize           alignment;
--   >     uint32_t               memoryTypeBits;
--   > } VkMemoryRequirements;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryRequirements VkMemoryRequirements registry at www.khronos.org>
type VkMemoryRequirements = VkStruct VkMemoryRequirements' -- ' closing tick for hsc2hs

data VkMemoryRequirements' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryRequirements where
    type StructRep VkMemoryRequirements =
         'StructMeta "VkMemoryRequirements" VkMemoryRequirements  -- ' closing tick for hsc2hs
                                                                 (24)
{-# LINE 407 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 408 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "size" VkDeviceSize 'False  -- ' closing tick for hsc2hs
                                                    (0)
{-# LINE 410 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "alignment" VkDeviceSize 'False
                                                         (8)
{-# LINE 415 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memoryTypeBits" Word32 'False
                                                        (16)
{-# LINE 420 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkMemoryRequirements2 {
--   >     VkStructureType sType;
--   >     void* pNext;
--   >     VkMemoryRequirements                                                 memoryRequirements;
--   > } VkMemoryRequirements2;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryRequirements2 VkMemoryRequirements2 registry at www.khronos.org>
type VkMemoryRequirements2 = VkStruct VkMemoryRequirements2' -- ' closing tick for hsc2hs

data VkMemoryRequirements2' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryRequirements2 where
    type StructRep VkMemoryRequirements2 =
         'StructMeta "VkMemoryRequirements2" VkMemoryRequirements2  -- ' closing tick for hsc2hs
                                                                   (40)
{-# LINE 442 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 443 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 445 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 450 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "memoryRequirements" VkMemoryRequirements 'False
                (16)
{-# LINE 455 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | Alias for `VkMemoryRequirements2`
type VkMemoryRequirements2KHR = VkMemoryRequirements2

-- | > typedef struct VkMemoryType {
--   >     VkMemoryPropertyFlags  propertyFlags;
--   >     uint32_t               heapIndex;
--   > } VkMemoryType;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryType VkMemoryType registry at www.khronos.org>
type VkMemoryType = VkStruct VkMemoryType' -- ' closing tick for hsc2hs

data VkMemoryType' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryType where
    type StructRep VkMemoryType =
         'StructMeta "VkMemoryType" VkMemoryType  -- ' closing tick for hsc2hs
                                                 (8)
{-# LINE 479 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           4
{-# LINE 480 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "propertyFlags" VkMemoryPropertyFlags 'True  -- ' closing tick for hsc2hs
                                                                     (0)
{-# LINE 482 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "heapIndex" Word32 'False
                                                   (4)
{-# LINE 487 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs