{-# LINE 1 "src/Gpu/Vulkan/Device/Core.hsc" #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Gpu.Vulkan.Device.Core (
create, destroy, D, CreateInfo, pattern CreateInfo,
createInfoSType, createInfoPNext, createInfoFlags,
createInfoQueueCreateInfoCount, createInfoPQueueCreateInfos,
createInfoEnabledLayerCount, createInfoPpEnabledLayerNames,
createInfoEnabledExtensionCount, createInfoPpEnabledExtensionNames,
createInfoPEnabledFeatures,
QueueCreateInfo, PtrQueueCreateInfo, pattern QueueCreateInfo,
queueCreateInfoSType, queueCreateInfoPNext, queueCreateInfoFlags,
queueCreateInfoQueueFamilyIndex,
queueCreateInfoQueueCount, queueCreateInfoPQueuePriorities,
getQueue, waitIdle
) where
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 qualified Gpu.Vulkan.PhysicalDevice.Core as PhysicalDevice
import qualified Gpu.Vulkan.PhysicalDevice.Struct.Core as PhysicalDevice
import qualified Gpu.Vulkan.Queue.Core as Queue
queueStructureType :: Word32
{-# LINE 45 "src/Gpu/Vulkan/Device/Core.hsc" #-}
queueStructureType = 2
{-# LINE 46 "src/Gpu/Vulkan/Device/Core.hsc" #-}
struct "QueueCreateInfo" (40)
{-# LINE 48 "src/Gpu/Vulkan/Device/Core.hsc" #-}
8 [
{-# LINE 49 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0)
{-# LINE 51 "src/Gpu/Vulkan/Device/Core.hsc" #-}
p queueStructureType |]),
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 54 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 55 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("flags", ''Word32,
{-# LINE 56 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 57 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 58 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("queueFamilyIndex", ''Word32,
{-# LINE 59 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 20) |],
{-# LINE 60 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 20) |]),
{-# LINE 61 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("queueCount", ''Word32,
{-# LINE 62 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 63 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 64 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("pQueuePriorities", ''PtrFloat,
[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 66 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]) ]
{-# LINE 67 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[''Show, ''Storable]
type PtrQueueCreateInfo = Ptr QueueCreateInfo
struct "CreateInfo" (72)
{-# LINE 72 "src/Gpu/Vulkan/Device/Core.hsc" #-}
8 [
{-# LINE 73 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0) p
{-# LINE 75 "src/Gpu/Vulkan/Device/Core.hsc" #-}
(3 ::
{-# LINE 76 "src/Gpu/Vulkan/Device/Core.hsc" #-}
Word32) |]),
{-# LINE 77 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("pNext", ''PtrVoid, [| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 78 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 79 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("flags", ''Word32,
{-# LINE 80 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 81 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 82 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("queueCreateInfoCount", ''Word32,
{-# LINE 83 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 20) |],
{-# LINE 84 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 20) |]),
{-# LINE 85 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("pQueueCreateInfos", ''PtrQueueCreateInfo,
[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 87 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 88 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("enabledLayerCount", ''Word32,
{-# LINE 89 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 90 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]),
{-# LINE 91 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("ppEnabledLayerNames", ''PtrCString,
[| (\hsc_ptr -> peekByteOff hsc_ptr 40) |],
{-# LINE 93 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 40) |]),
{-# LINE 94 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("enabledExtensionCount", ''Word32,
{-# LINE 95 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 48) |],
{-# LINE 96 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 48) |]),
{-# LINE 97 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("ppEnabledExtensionNames", ''PtrCString,
[| (\hsc_ptr -> peekByteOff hsc_ptr 56) |],
{-# LINE 99 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 56) |]),
{-# LINE 100 "src/Gpu/Vulkan/Device/Core.hsc" #-}
("pEnabledFeatures", ''PhysicalDevice.PtrFeatures,
[| (\hsc_ptr -> peekByteOff hsc_ptr 64) |],
{-# LINE 102 "src/Gpu/Vulkan/Device/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 64) |])
{-# LINE 103 "src/Gpu/Vulkan/Device/Core.hsc" #-}
]
[''Show, ''Storable]
data DTag
type D = Ptr DTag
foreign import ccall "vkCreateDevice" create ::
PhysicalDevice.P -> Ptr CreateInfo -> Ptr AllocationCallbacks.A ->
Ptr D -> IO Int32
{-# LINE 112 "src/Gpu/Vulkan/Device/Core.hsc" #-}
foreign import ccall "vkDestroyDevice"
destroy :: D -> Ptr AllocationCallbacks.A -> IO ()
foreign import ccall "vkGetDeviceQueue" getQueue ::
D -> Word32 -> Word32 -> Ptr Queue.Q -> IO ()
{-# LINE 118 "src/Gpu/Vulkan/Device/Core.hsc" #-}
foreign import ccall "vkDeviceWaitIdle" waitIdle ::
D -> IO Int32
{-# LINE 121 "src/Gpu/Vulkan/Device/Core.hsc" #-}