finish up memory allocator
This commit is contained in:
parent
133170f6ad
commit
e1dfa195b7
1 changed files with 16 additions and 3 deletions
|
@ -3,10 +3,15 @@
|
|||
{-# LANGUAGE DataKinds #-}
|
||||
module Memory where
|
||||
|
||||
import Control.Monad.IO.Class (liftIO)
|
||||
import Control.Monad.Trans.Resource
|
||||
|
||||
import Foreign.Ptr
|
||||
import Foreign.Storable
|
||||
|
||||
import qualified VulkanMemoryAllocator as VMA
|
||||
import qualified Vulkan.Core10 as Vk
|
||||
import qualified Vulkan.Dynamic as Vk
|
||||
import qualified Vulkan.Zero as Vk
|
||||
|
||||
initAllocator
|
||||
|
@ -16,10 +21,18 @@ initAllocator
|
|||
-> Vk.Instance
|
||||
-> m VMA.Allocator
|
||||
initAllocator physicalDevice device instance' = do
|
||||
instanceProcAddr <- liftIO $ peek $ castFunPtrToPtr $
|
||||
Vk.pVkGetInstanceProcAddr ((Vk.instanceCmds :: Vk.Instance -> Vk.InstanceCmds) instance')
|
||||
deviceProcAddr <- liftIO $ peek $ castFunPtrToPtr $
|
||||
Vk.pVkGetDeviceProcAddr ((Vk.deviceCmds :: Vk.Device -> Vk.DeviceCmds) device)
|
||||
let allocatorInfo = Vk.zero
|
||||
{ VMA.physicalDevice = Vk.physicalDeviceHandle physicalDevice
|
||||
, VMA.device = Vk.deviceHandle device
|
||||
, VMA.instance' = Vk.instanceHandle instance'
|
||||
{ VMA.physicalDevice = Vk.physicalDeviceHandle physicalDevice
|
||||
, VMA.device = Vk.deviceHandle device
|
||||
, VMA.instance' = Vk.instanceHandle instance'
|
||||
, VMA.vulkanFunctions = Just (Vk.zero
|
||||
{ VMA.vkGetInstanceProcAddr = instanceProcAddr
|
||||
, VMA.vkGetDeviceProcAddr = deviceProcAddr
|
||||
} :: VMA.VulkanFunctions)
|
||||
} :: VMA.AllocatorCreateInfo
|
||||
|
||||
(_, allocator) <- allocate
|
||||
|
|
Loading…
Reference in a new issue