{-# LINE 1 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Gpu.Vulkan.Memory.Core (
allocate, free, M, AllocateInfo, pattern AllocateInfo,
allocateInfoSType, allocateInfoPNext, allocateInfoAllocationSize,
allocateInfoMemoryTypeIndex,
map, unmap,
Requirements, pattern Requirements,
requirementsSize, requirementsAlignment, requirementsMemoryTypeBits,
MType, ListMType, pattern MType, mTypePropertyFlags, mTypeHeapIndex, maxTypes,
Heap, ListHeap, pattern Heap, heapSize, heapFlags, maxHeaps,
Barrier, pattern Barrier,
barrierSType, barrierPNext, barrierSrcAccessMask, barrierDstAccessMask,
Barrier2, PtrBarrier2, pattern Barrier2,
barrier2SType, barrier2PNext,
barrier2SrcStageMask, barrier2SrcAccessMask,
barrier2DstStageMask, barrier2DstAccessMask
) where
import Prelude hiding (map)
import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Foreign.C.Struct.TypeSynonyms
import Data.Word
import Data.Int
import qualified Gpu.Vulkan.AllocationCallbacks.Core as AllocationCallbacks
import {-# SOURCE #-} qualified Gpu.Vulkan.Device.Core as Device
data MTag
type M = Ptr MTag
struct "Requirements" (24)
{-# LINE 62 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
8 [
{-# LINE 63 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("size", ''Word64,
{-# LINE 64 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 65 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 66 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("alignment", ''Word64,
{-# LINE 67 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 68 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 69 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("memoryTypeBits", ''Word32,
{-# LINE 70 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 71 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]) ]
{-# LINE 72 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
struct "MType" (8) 4 [
{-# LINE 75 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("propertyFlags", ''Word32,
{-# LINE 76 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 77 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 78 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("heapIndex", ''Word32,
{-# LINE 79 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 4) |],
{-# LINE 80 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 4) |]) ]
{-# LINE 81 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
type ListMType = [MType]
struct "Heap" (16) 8 [
{-# LINE 86 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("size", ''Word64,
{-# LINE 87 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 88 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 89 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("flags", ''Word32,
{-# LINE 90 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 91 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]) ]
{-# LINE 92 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
type ListHeap = [Heap]
maxTypes, maxHeaps :: Integral n => n
maxTypes :: forall n. Integral n => n
maxTypes = n
32
maxHeaps :: forall n. Integral n => n
{-# LINE 98 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
maxHeaps = 16
{-# LINE 99 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
sType :: Word32
{-# LINE 101 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
sType = 5
{-# LINE 102 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
struct "AllocateInfo" (32)
{-# LINE 104 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
8 [
{-# LINE 105 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0) p sType |]),
{-# LINE 107 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 109 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 110 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("allocationSize", ''Word64,
{-# LINE 111 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 112 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 113 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("memoryTypeIndex", ''Word32,
{-# LINE 114 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 115 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]) ]
{-# LINE 116 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
foreign import ccall "vkAllocateMemory" allocate ::
Device.D -> Ptr AllocateInfo -> Ptr AllocationCallbacks.A ->
Ptr M -> IO Int32
{-# LINE 121 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
foreign import ccall "vkFreeMemory" free ::
Device.D -> M -> Ptr AllocationCallbacks.A -> IO ()
foreign import ccall "vkMapMemory" map ::
Device.D -> M -> Word64 -> Word64 ->
{-# LINE 127 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
Word32 -> Ptr (Ptr a) -> IO Int32
{-# LINE 128 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
foreign import ccall "vkUnmapMemory" unmap :: Device.D -> M -> IO ()
bType :: Word32
{-# LINE 132 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
bType = 46
{-# LINE 133 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
struct "Barrier" (24) 8 [
{-# LINE 135 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0) p bType |]),
{-# LINE 137 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 139 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 140 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("srcAccessMask", ''Word32,
{-# LINE 141 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 142 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 143 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("dstAccessMask", ''Word32,
{-# LINE 144 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 20) |],
{-# LINE 145 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 20) |]) ]
{-# LINE 146 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
bType2 :: Word32
{-# LINE 149 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
bType2 = 1000314000
{-# LINE 150 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
struct "Barrier2" (48) 8 [
{-# LINE 152 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0) p bType2 |]),
{-# LINE 154 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 156 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 157 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("srcStageMask", ''Word64,
{-# LINE 158 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 159 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 160 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("srcAccessMask", ''Word64,
{-# LINE 161 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 162 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 163 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("dstStageMask", ''Word64,
{-# LINE 164 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 165 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]),
{-# LINE 166 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("dstAccessMask", ''Word64,
{-# LINE 167 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 40) |],
{-# LINE 168 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 40) |]) ]
{-# LINE 169 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
type PtrBarrier2 = Ptr Barrier2