33 lines
909 B
Haskell
33 lines
909 B
Haskell
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||
|
{-# LANGUAGE DataKinds #-}
|
||
|
module Memory where
|
||
|
|
||
|
import Control.Monad.Trans.Resource
|
||
|
|
||
|
import qualified VulkanMemoryAllocator as VMA
|
||
|
import qualified Vulkan.Core10 as Vk
|
||
|
import qualified Vulkan.Zero as Vk
|
||
|
|
||
|
initAllocator
|
||
|
:: (MonadResource m, MonadFail m)
|
||
|
=> Vk.PhysicalDevice
|
||
|
-> Vk.Device
|
||
|
-> Vk.Instance
|
||
|
-> m VMA.Allocator
|
||
|
initAllocator physicalDevice device instance' = do
|
||
|
let allocatorInfo = Vk.zero
|
||
|
{ VMA.physicalDevice = Vk.physicalDeviceHandle physicalDevice
|
||
|
, VMA.device = Vk.deviceHandle device
|
||
|
, VMA.instance' = Vk.instanceHandle instance'
|
||
|
} :: VMA.AllocatorCreateInfo
|
||
|
|
||
|
(_, allocator) <- allocate
|
||
|
(VMA.createAllocator allocatorInfo)
|
||
|
(\allocator -> do
|
||
|
print ("destroying allocator" :: String)
|
||
|
VMA.destroyAllocator allocator
|
||
|
)
|
||
|
|
||
|
return allocator
|