{-# 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,
        VkMemoryOpaqueCaptureAddressAllocateInfo,
        VkMemoryOpaqueCaptureAddressAllocateInfoKHR,
        VkMemoryPriorityAllocateInfoEXT, 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.2-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 49 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 50 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 52 "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 57 "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 62 "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 67 "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.2-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 93 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 94 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 96 "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 101 "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 106 "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 111 "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.2-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 134 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 135 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 137 "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 142 "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 147 "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 152 "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.2-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 177 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 178 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 180 "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 185 "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 190 "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 195 "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.2-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 224 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 225 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 227 "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 232 "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 237 "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 242 "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.2-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 268 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 269 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 271 "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 276 "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 281 "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.2-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 304 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 305 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 307 "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 312 "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 317 "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 322 "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.2-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 343 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 344 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "size" VkDeviceSize 'False  -- ' closing tick for hsc2hs
                                                    (0)
{-# LINE 346 "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 351 "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.2-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 375 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 376 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 378 "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 383 "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 388 "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 VkMemoryOpaqueCaptureAddressAllocateInfo {
--   >     VkStructureType sType;
--   >     const void*                   pNext;
--   >     uint64_t                      opaqueCaptureAddress;
--   > } VkMemoryOpaqueCaptureAddressAllocateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfo registry at www.khronos.org>
type VkMemoryOpaqueCaptureAddressAllocateInfo =
     VkStruct VkMemoryOpaqueCaptureAddressAllocateInfo' -- ' closing tick for hsc2hs

data VkMemoryOpaqueCaptureAddressAllocateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryOpaqueCaptureAddressAllocateInfo
         where
    type StructRep VkMemoryOpaqueCaptureAddressAllocateInfo =
         'StructMeta "VkMemoryOpaqueCaptureAddressAllocateInfo" -- ' closing tick for hsc2hs
           VkMemoryOpaqueCaptureAddressAllocateInfo
           (24)
{-# LINE 413 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 414 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 416 "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 421 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "opaqueCaptureAddress" Word64 'False 
                                                              (16)
{-# LINE 426 "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 `VkMemoryOpaqueCaptureAddressAllocateInfo`
type VkMemoryOpaqueCaptureAddressAllocateInfoKHR =
     VkMemoryOpaqueCaptureAddressAllocateInfo

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

data VkMemoryPriorityAllocateInfoEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkMemoryPriorityAllocateInfoEXT where
    type StructRep VkMemoryPriorityAllocateInfoEXT =
         'StructMeta "VkMemoryPriorityAllocateInfoEXT" -- ' closing tick for hsc2hs
           VkMemoryPriorityAllocateInfoEXT
           (24)
{-# LINE 454 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 455 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 457 "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 462 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "priority" ( -- ' closing tick for hsc2hs
                                     Float
{-# LINE 467 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
                                     ) 'False  -- ' closing tick for hsc2hs
                                              (16)
{-# LINE 469 "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

-- | > typedef struct VkMemoryRequirements {
--   >     VkDeviceSize           size;
--   >     VkDeviceSize           alignment;
--   >     uint32_t               memoryTypeBits;
--   > } VkMemoryRequirements;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-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 491 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 492 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "size" VkDeviceSize 'False  -- ' closing tick for hsc2hs
                                                    (0)
{-# LINE 494 "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 499 "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 504 "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.2-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 526 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           8
{-# LINE 527 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 529 "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 534 "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 539 "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.2-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 563 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           4
{-# LINE 564 "src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc" #-}
           '[('FieldMeta "propertyFlags" VkMemoryPropertyFlags 'True  -- ' closing tick for hsc2hs
                                                                     (0)
{-# LINE 566 "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 571 "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