{-# 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
) 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 57 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
8 [
{-# LINE 58 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("size", ''Word64,
{-# LINE 59 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 60 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 61 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("alignment", ''Word64,
{-# LINE 62 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 63 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 64 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("memoryTypeBits", ''Word32,
{-# LINE 65 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 66 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]) ]
{-# LINE 67 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
struct "MType" (8) 4 [
{-# LINE 70 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("propertyFlags", ''Word32,
{-# LINE 71 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 72 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 73 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("heapIndex", ''Word32,
{-# LINE 74 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 4) |],
{-# LINE 75 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 4) |]) ]
{-# LINE 76 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]
type ListMType = [MType]
struct "Heap" (16) 8 [
{-# LINE 81 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("size", ''Word64,
{-# LINE 82 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 83 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 84 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("flags", ''Word32,
{-# LINE 85 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 86 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]) ]
{-# LINE 87 "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 93 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
maxHeaps = 16
{-# LINE 94 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
sType :: Word32
{-# LINE 96 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
sType = 5
{-# LINE 97 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
struct "AllocateInfo" (32)
{-# LINE 99 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
8 [
{-# LINE 100 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0) p sType |]),
{-# LINE 102 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 104 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 105 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("allocationSize", ''Word64,
{-# LINE 106 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 107 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 108 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("memoryTypeIndex", ''Word32,
{-# LINE 109 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 110 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]) ]
{-# LINE 111 "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 116 "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 122 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
Word32 -> Ptr (Ptr a) -> IO Int32
{-# LINE 123 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
foreign import ccall "vkUnmapMemory" unmap :: Device.D -> M -> IO ()
bType :: Word32
{-# LINE 127 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
bType = 46
{-# LINE 128 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
struct "Barrier" (24) 8 [
{-# LINE 130 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0) p bType |]),
{-# LINE 132 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 134 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 135 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("srcAccessMask", ''Word32,
{-# LINE 136 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 137 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 138 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
("dstAccessMask", ''Word32,
{-# LINE 139 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 20) |],
{-# LINE 140 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 20) |]) ]
{-# LINE 141 "src/Gpu/Vulkan/Memory/Core.hsc" #-}
[''Show, ''Storable]