{-# language CPP #-}
module Vulkan.Core10.DeviceInitialization ( createInstance
, withInstance
, destroyInstance
, enumeratePhysicalDevices
, getDeviceProcAddr
, getInstanceProcAddr
, getPhysicalDeviceProperties
, getPhysicalDeviceQueueFamilyProperties
, getPhysicalDeviceMemoryProperties
, getPhysicalDeviceFeatures
, getPhysicalDeviceFormatProperties
, getPhysicalDeviceImageFormatProperties
, PhysicalDeviceProperties(..)
, ApplicationInfo(..)
, InstanceCreateInfo(..)
, QueueFamilyProperties(..)
, PhysicalDeviceMemoryProperties(..)
, MemoryType(..)
, MemoryHeap(..)
, FormatProperties(..)
, ImageFormatProperties(..)
, PhysicalDeviceFeatures(..)
, PhysicalDeviceSparseProperties(..)
, PhysicalDeviceLimits(..)
, Instance(..)
, PhysicalDevice(..)
, AllocationCallbacks(..)
, ImageType(..)
, ImageTiling(..)
, InternalAllocationType(..)
, SystemAllocationScope(..)
, PhysicalDeviceType(..)
, Format(..)
, QueueFlagBits(..)
, QueueFlags
, MemoryPropertyFlagBits(..)
, MemoryPropertyFlags
, MemoryHeapFlagBits(..)
, MemoryHeapFlags
, ImageUsageFlagBits(..)
, ImageUsageFlags
, ImageCreateFlagBits(..)
, ImageCreateFlags
, FormatFeatureFlagBits(..)
, FormatFeatureFlags
, SampleCountFlagBits(..)
, SampleCountFlags
, InstanceCreateFlagBits(..)
, InstanceCreateFlags
, FN_vkInternalAllocationNotification
, PFN_vkInternalAllocationNotification
, FN_vkInternalFreeNotification
, PFN_vkInternalFreeNotification
, FN_vkReallocationFunction
, PFN_vkReallocationFunction
, FN_vkAllocationFunction
, PFN_vkAllocationFunction
, FN_vkFreeFunction
, PFN_vkFreeFunction
, FN_vkVoidFunction
, PFN_vkVoidFunction
) where
import Vulkan.CStruct.Utils (FixedArray)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import Foreign.Marshal.Utils (maybePeek)
import GHC.Base (when)
import GHC.IO (throwIO)
import Foreign.Ptr (castFunPtr)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Data.ByteString (packCString)
import Data.ByteString (useAsCString)
import Data.Coerce (coerce)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import Foreign.C.Types (CChar(..))
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.Type.Equality ((:~:)(Refl))
import Data.Typeable (Typeable)
import Foreign.C.Types (CChar)
import Foreign.C.Types (CFloat)
import Foreign.C.Types (CFloat(..))
import Foreign.C.Types (CFloat(CFloat))
import Foreign.C.Types (CSize)
import Foreign.C.Types (CSize(..))
import Foreign.C.Types (CSize(CSize))
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Data.Int (Int32)
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Ptr (Ptr(Ptr))
import Data.Word (Word32)
import Data.Word (Word64)
import Data.Word (Word8)
import Data.ByteString (ByteString)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.Dynamic (getInstanceProcAddr')
import Vulkan.Dynamic (initInstanceCmds)
import Vulkan.CStruct.Utils (lowerArrayPtr)
import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.CStruct.Extends (Chain)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceProcAddr))
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.Handles (Device_T)
import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingListLUNARG)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectCreateInfoEXT)
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.FundamentalTypes (Extent3D)
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.Core10.Enums.Format (Format(..))
import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
import Vulkan.Core10.Enums.ImageTiling (ImageTiling)
import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
import Vulkan.Core10.Enums.ImageType (ImageType)
import Vulkan.Core10.Enums.ImageType (ImageType(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import Vulkan.Core10.Handles (Instance)
import Vulkan.Core10.Handles (Instance(..))
import Vulkan.Core10.Handles (Instance(Instance))
import Vulkan.Dynamic (InstanceCmds(pVkDestroyInstance))
import Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDevices))
import Vulkan.Dynamic (InstanceCmds(pVkGetInstanceProcAddr))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFeatures))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFormatProperties))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceImageFormatProperties))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMemoryProperties))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceProperties))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyProperties))
import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags)
import Vulkan.Core10.Handles (Instance_T)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingsCreateInfoEXT)
import Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS)
import Vulkan.Core10.APIConstants (MAX_MEMORY_TYPES)
import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_NAME_SIZE)
import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType)
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.APIConstants (pattern MAX_MEMORY_HEAPS)
import Vulkan.Core10.APIConstants (pattern MAX_MEMORY_TYPES)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_APPLICATION_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INSTANCE_CREATE_INFO))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks(..))
import Vulkan.Core10.FuncPointers (FN_vkAllocationFunction)
import Vulkan.Core10.FuncPointers (FN_vkFreeFunction)
import Vulkan.Core10.FuncPointers (FN_vkInternalAllocationNotification)
import Vulkan.Core10.FuncPointers (FN_vkInternalFreeNotification)
import Vulkan.Core10.FuncPointers (FN_vkReallocationFunction)
import Vulkan.Core10.FuncPointers (FN_vkVoidFunction)
import Vulkan.Core10.Enums.Format (Format(..))
import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))
import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
import Vulkan.Core10.Enums.ImageType (ImageType(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import Vulkan.Core10.Handles (Instance(..))
import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlagBits(..))
import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags)
import Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType(..))
import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(..))
import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlagBits(..))
import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
import Vulkan.Core10.FuncPointers (PFN_vkAllocationFunction)
import Vulkan.Core10.FuncPointers (PFN_vkFreeFunction)
import Vulkan.Core10.FuncPointers (PFN_vkInternalAllocationNotification)
import Vulkan.Core10.FuncPointers (PFN_vkInternalFreeNotification)
import Vulkan.Core10.FuncPointers (PFN_vkReallocationFunction)
import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType(..))
import Vulkan.Core10.Enums.QueueFlagBits (QueueFlagBits(..))
import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))
import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
import Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateInstance
:: FunPtr (Ptr (SomeStruct InstanceCreateInfo) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result) -> Ptr (SomeStruct InstanceCreateInfo) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result
createInstance :: forall a io
. (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io)
=>
(InstanceCreateInfo a)
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (Instance)
createInstance :: forall (a :: [*]) (io :: * -> *).
(Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) =>
InstanceCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks) -> io Instance
createInstance InstanceCreateInfo a
createInfo "allocator" ::: Maybe AllocationCallbacks
allocator = IO Instance -> io Instance
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Instance -> io Instance)
-> (ContT Instance IO Instance -> IO Instance)
-> ContT Instance IO Instance
-> io Instance
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT Instance IO Instance -> IO Instance
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT Instance IO Instance -> io Instance)
-> ContT Instance IO Instance -> io Instance
forall a b. (a -> b) -> a -> b
$ do
vkCreateInstancePtr <- IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
-> ContT
Instance
IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
forall (m :: * -> *) a. Monad m => m a -> ContT Instance m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
-> ContT
Instance
IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result)))
-> IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
-> ContT
Instance
IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
forall a b. (a -> b) -> a -> b
$ forall a b. FunPtr a -> FunPtr b
castFunPtr @_ @(("pCreateInfo" ::: Ptr (SomeStruct InstanceCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pInstance" ::: Ptr (Ptr Instance_T)) -> IO Result) (FunPtr FN_vkVoidFunction
-> FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
-> IO (FunPtr FN_vkVoidFunction)
-> IO
(FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction)
getInstanceProcAddr' Ptr Instance_T
forall a. Ptr a
nullPtr (Addr# -> "pName" ::: Ptr CChar
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCreateInstance"#)
lift $ unless (vkCreateInstancePtr /= nullFunPtr) $
throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateInstance is null" Nothing Nothing
let vkCreateInstance' = FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result)
-> Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr (Ptr Instance_T)
-> IO Result
mkVkCreateInstance FunPtr
(Ptr (SomeStruct InstanceCreateInfo)
-> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result)
vkCreateInstancePtr
pCreateInfo <- ContT $ withCStruct (createInfo)
pAllocator <- case (allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks
-> ContT Instance IO (Ptr AllocationCallbacks)
forall a. a -> ContT Instance IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO Instance) -> IO Instance)
-> ContT Instance IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO Instance) -> IO Instance)
-> ContT Instance IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO Instance) -> IO Instance)
-> ContT Instance IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks -> IO Instance) -> IO Instance
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
pPInstance <- ContT $ bracket (callocBytes @(Ptr Instance_T) 8) free
r <- lift $ traceAroundEvent "vkCreateInstance" (vkCreateInstance'
(forgetExtensions pCreateInfo)
pAllocator
(pPInstance))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pInstance <- lift $ peek @(Ptr Instance_T) pPInstance
pInstance' <- lift $ (\Ptr Instance_T
h -> Ptr Instance_T -> InstanceCmds -> Instance
Instance Ptr Instance_T
h (InstanceCmds -> Instance) -> IO InstanceCmds -> IO Instance
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr Instance_T -> IO InstanceCmds
initInstanceCmds Ptr Instance_T
h) pInstance
pure $ (pInstance')
withInstance :: forall a io r . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) => InstanceCreateInfo a -> Maybe AllocationCallbacks -> (io Instance -> (Instance -> io ()) -> r) -> r
withInstance :: forall (a :: [*]) (io :: * -> *) r.
(Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) =>
InstanceCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io Instance -> (Instance -> io ()) -> r)
-> r
withInstance InstanceCreateInfo a
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator io Instance -> (Instance -> io ()) -> r
b =
io Instance -> (Instance -> io ()) -> r
b (InstanceCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks) -> io Instance
forall (a :: [*]) (io :: * -> *).
(Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) =>
InstanceCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks) -> io Instance
createInstance InstanceCreateInfo a
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\(Instance
o0) -> Instance -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
forall (io :: * -> *).
MonadIO io =>
Instance -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
destroyInstance Instance
o0 "allocator" ::: Maybe AllocationCallbacks
pAllocator)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroyInstance
:: FunPtr (Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()
destroyInstance :: forall io
. (MonadIO io)
=>
Instance
->
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyInstance :: forall (io :: * -> *).
MonadIO io =>
Instance -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
destroyInstance Instance
instance' "allocator" ::: Maybe AllocationCallbacks
allocator = FN_vkVoidFunction -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (FN_vkVoidFunction -> io ())
-> (ContT () IO () -> FN_vkVoidFunction) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> FN_vkVoidFunction
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkDestroyInstancePtr :: FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
vkDestroyInstancePtr = InstanceCmds
-> FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
pVkDestroyInstance (case Instance
instance' of Instance{InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds :: Instance -> InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT () IO ())
-> FN_vkVoidFunction -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
vkDestroyInstancePtr FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkDestroyInstance is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkDestroyInstance' :: Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction
vkDestroyInstance' = FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction
mkVkDestroyInstance FunPtr
(Ptr Instance_T -> Ptr AllocationCallbacks -> FN_vkVoidFunction)
vkDestroyInstancePtr
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks -> ContT () IO (Ptr AllocationCallbacks)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> FN_vkVoidFunction)
-> ContT () IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> FN_vkVoidFunction)
-> ContT () IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> FN_vkVoidFunction)
-> ContT () IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks -> FN_vkVoidFunction)
-> FN_vkVoidFunction
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
lift $ traceAroundEvent "vkDestroyInstance" (vkDestroyInstance'
(instanceHandle (instance'))
pAllocator)
pure $ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkEnumeratePhysicalDevices
:: FunPtr (Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result) -> Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result
enumeratePhysicalDevices :: forall io
. (MonadIO io)
=>
Instance
-> io (Result, ("physicalDevices" ::: Vector PhysicalDevice))
enumeratePhysicalDevices :: forall (io :: * -> *).
MonadIO io =>
Instance
-> io (Result, "physicalDevices" ::: Vector PhysicalDevice)
enumeratePhysicalDevices Instance
instance' = IO (Result, "physicalDevices" ::: Vector PhysicalDevice)
-> io (Result, "physicalDevices" ::: Vector PhysicalDevice)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Result, "physicalDevices" ::: Vector PhysicalDevice)
-> io (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> (ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Result, "physicalDevices" ::: Vector PhysicalDevice)
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Result, "physicalDevices" ::: Vector PhysicalDevice)
-> io (Result, "physicalDevices" ::: Vector PhysicalDevice)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Result, "physicalDevices" ::: Vector PhysicalDevice)
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Result, "physicalDevices" ::: Vector PhysicalDevice)
-> io (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Result, "physicalDevices" ::: Vector PhysicalDevice)
-> io (Result, "physicalDevices" ::: Vector PhysicalDevice)
forall a b. (a -> b) -> a -> b
$ do
let cmds :: InstanceCmds
cmds = case Instance
instance' of Instance{InstanceCmds
instanceCmds :: Instance -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds
let vkEnumeratePhysicalDevicesPtr :: FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
vkEnumeratePhysicalDevicesPtr = InstanceCmds
-> FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
pVkEnumeratePhysicalDevices InstanceCmds
cmds
FN_vkVoidFunction
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice) IO ()
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT (Result, "physicalDevices" ::: Vector PhysicalDevice) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice) IO ())
-> FN_vkVoidFunction
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
vkEnumeratePhysicalDevicesPtr FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
-> FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkEnumeratePhysicalDevices is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkEnumeratePhysicalDevices' :: Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result
vkEnumeratePhysicalDevices' = FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
-> Ptr Instance_T
-> Ptr Word32
-> Ptr (Ptr PhysicalDevice_T)
-> IO Result
mkVkEnumeratePhysicalDevices FunPtr
(Ptr Instance_T
-> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result)
vkEnumeratePhysicalDevicesPtr
let instance'' :: Ptr Instance_T
instance'' = Instance -> Ptr Instance_T
instanceHandle (Instance
instance')
pPPhysicalDeviceCount <- ((Ptr Word32
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Ptr Word32)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Word32
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Ptr Word32))
-> ((Ptr Word32
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> ContT
(Result, "physicalDevices" ::: Vector PhysicalDevice)
IO
(Ptr Word32)
forall a b. (a -> b) -> a -> b
$ IO (Ptr Word32)
-> (Ptr Word32 -> FN_vkVoidFunction)
-> (Ptr Word32
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice))
-> IO (Result, "physicalDevices" ::: Vector PhysicalDevice)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @Word32 Int
4) Ptr Word32 -> FN_vkVoidFunction
forall a. Ptr a -> FN_vkVoidFunction
free
r <- lift $ traceAroundEvent "vkEnumeratePhysicalDevices" (vkEnumeratePhysicalDevices'
instance''
(pPPhysicalDeviceCount)
(nullPtr))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pPhysicalDeviceCount <- lift $ peek @Word32 pPPhysicalDeviceCount
pPPhysicalDevices <- ContT $ bracket (callocBytes @(Ptr PhysicalDevice_T) ((fromIntegral (pPhysicalDeviceCount)) * 8)) free
r' <- lift $ traceAroundEvent "vkEnumeratePhysicalDevices" (vkEnumeratePhysicalDevices'
instance''
(pPPhysicalDeviceCount)
(pPPhysicalDevices))
lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
pPhysicalDeviceCount' <- lift $ peek @Word32 pPPhysicalDeviceCount
pPhysicalDevices' <- lift $ generateM (fromIntegral (pPhysicalDeviceCount')) (\Int
i -> do
pPhysicalDevicesElem <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr PhysicalDevice_T) ((Ptr (Ptr PhysicalDevice_T)
pPPhysicalDevices Ptr (Ptr PhysicalDevice_T) -> Int -> Ptr (Ptr PhysicalDevice_T)
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (Ptr PhysicalDevice_T)))
pure $ (\Ptr PhysicalDevice_T
h -> Ptr PhysicalDevice_T -> InstanceCmds -> PhysicalDevice
PhysicalDevice Ptr PhysicalDevice_T
h InstanceCmds
cmds ) pPhysicalDevicesElem)
pure $ ((r'), pPhysicalDevices')
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetDeviceProcAddr
:: FunPtr (Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction
getDeviceProcAddr :: forall io
. (MonadIO io)
=>
Device
->
("name" ::: ByteString)
-> io (PFN_vkVoidFunction)
getDeviceProcAddr :: forall (io :: * -> *).
MonadIO io =>
Device -> ("name" ::: ByteString) -> io (FunPtr FN_vkVoidFunction)
getDeviceProcAddr Device
device "name" ::: ByteString
name = IO (FunPtr FN_vkVoidFunction) -> io (FunPtr FN_vkVoidFunction)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (FunPtr FN_vkVoidFunction) -> io (FunPtr FN_vkVoidFunction))
-> (ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> io (FunPtr FN_vkVoidFunction)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> IO (FunPtr FN_vkVoidFunction)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> io (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> io (FunPtr FN_vkVoidFunction)
forall a b. (a -> b) -> a -> b
$ do
let vkGetDeviceProcAddrPtr :: FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
vkGetDeviceProcAddrPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
pVkGetDeviceProcAddr (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
FN_vkVoidFunction -> ContT (FunPtr FN_vkVoidFunction) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (FunPtr FN_vkVoidFunction) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT (FunPtr FN_vkVoidFunction) IO ())
-> FN_vkVoidFunction -> ContT (FunPtr FN_vkVoidFunction) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
vkGetDeviceProcAddrPtr FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetDeviceProcAddr is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetDeviceProcAddr' :: Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction)
vkGetDeviceProcAddr' = FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> Ptr Device_T
-> ("pName" ::: Ptr CChar)
-> IO (FunPtr FN_vkVoidFunction)
mkVkGetDeviceProcAddr FunPtr
(Ptr Device_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
vkGetDeviceProcAddrPtr
pName <- ((("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO ("pName" ::: Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO ("pName" ::: Ptr CChar))
-> ((("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO ("pName" ::: Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction)
forall a.
("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO a) -> IO a
useAsCString ("name" ::: ByteString
name)
r <- lift $ traceAroundEvent "vkGetDeviceProcAddr" (vkGetDeviceProcAddr'
(deviceHandle (device))
pName)
pure $ (r)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetInstanceProcAddr
:: FunPtr (Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction
getInstanceProcAddr :: forall io
. (MonadIO io)
=>
Instance
->
("name" ::: ByteString)
-> io (PFN_vkVoidFunction)
getInstanceProcAddr :: forall (io :: * -> *).
MonadIO io =>
Instance
-> ("name" ::: ByteString) -> io (FunPtr FN_vkVoidFunction)
getInstanceProcAddr Instance
instance' "name" ::: ByteString
name = IO (FunPtr FN_vkVoidFunction) -> io (FunPtr FN_vkVoidFunction)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (FunPtr FN_vkVoidFunction) -> io (FunPtr FN_vkVoidFunction))
-> (ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> io (FunPtr FN_vkVoidFunction)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> IO (FunPtr FN_vkVoidFunction)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> io (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO (FunPtr FN_vkVoidFunction)
-> io (FunPtr FN_vkVoidFunction)
forall a b. (a -> b) -> a -> b
$ do
let vkGetInstanceProcAddrPtr :: FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
vkGetInstanceProcAddrPtr = InstanceCmds
-> FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
pVkGetInstanceProcAddr (case Instance
instance' of Instance{InstanceCmds
instanceCmds :: Instance -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT (FunPtr FN_vkVoidFunction) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (FunPtr FN_vkVoidFunction) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT (FunPtr FN_vkVoidFunction) IO ())
-> FN_vkVoidFunction -> ContT (FunPtr FN_vkVoidFunction) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
vkGetInstanceProcAddrPtr FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetInstanceProcAddr is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetInstanceProcAddr' :: Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction)
vkGetInstanceProcAddr' = FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> Ptr Instance_T
-> ("pName" ::: Ptr CChar)
-> IO (FunPtr FN_vkVoidFunction)
mkVkGetInstanceProcAddr FunPtr
(Ptr Instance_T
-> ("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
vkGetInstanceProcAddrPtr
pName <- ((("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO ("pName" ::: Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO ("pName" ::: Ptr CChar))
-> ((("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction))
-> ContT (FunPtr FN_vkVoidFunction) IO ("pName" ::: Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO (FunPtr FN_vkVoidFunction))
-> IO (FunPtr FN_vkVoidFunction)
forall a.
("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO a) -> IO a
useAsCString ("name" ::: ByteString
name)
r <- lift $ traceAroundEvent "vkGetInstanceProcAddr" (vkGetInstanceProcAddr'
(instanceHandle (instance'))
pName)
pure $ (r)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceProperties
:: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()
getPhysicalDeviceProperties :: forall io
. (MonadIO io)
=>
PhysicalDevice
-> io (PhysicalDeviceProperties)
getPhysicalDeviceProperties :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice -> io PhysicalDeviceProperties
getPhysicalDeviceProperties PhysicalDevice
physicalDevice = IO PhysicalDeviceProperties -> io PhysicalDeviceProperties
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO PhysicalDeviceProperties -> io PhysicalDeviceProperties)
-> (ContT PhysicalDeviceProperties IO PhysicalDeviceProperties
-> IO PhysicalDeviceProperties)
-> ContT PhysicalDeviceProperties IO PhysicalDeviceProperties
-> io PhysicalDeviceProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT PhysicalDeviceProperties IO PhysicalDeviceProperties
-> IO PhysicalDeviceProperties
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT PhysicalDeviceProperties IO PhysicalDeviceProperties
-> io PhysicalDeviceProperties)
-> ContT PhysicalDeviceProperties IO PhysicalDeviceProperties
-> io PhysicalDeviceProperties
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDevicePropertiesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
vkGetPhysicalDevicePropertiesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
pVkGetPhysicalDeviceProperties (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds :: PhysicalDevice -> InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT PhysicalDeviceProperties IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT PhysicalDeviceProperties m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT PhysicalDeviceProperties IO ())
-> FN_vkVoidFunction -> ContT PhysicalDeviceProperties IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
vkGetPhysicalDevicePropertiesPtr FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceProperties is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceProperties' :: Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction
vkGetPhysicalDeviceProperties' = FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
-> Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties
-> FN_vkVoidFunction
mkVkGetPhysicalDeviceProperties FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceProperties -> FN_vkVoidFunction)
vkGetPhysicalDevicePropertiesPtr
pPProperties <- ((Ptr PhysicalDeviceProperties -> IO PhysicalDeviceProperties)
-> IO PhysicalDeviceProperties)
-> ContT PhysicalDeviceProperties IO (Ptr PhysicalDeviceProperties)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @PhysicalDeviceProperties)
lift $ traceAroundEvent "vkGetPhysicalDeviceProperties" (vkGetPhysicalDeviceProperties'
(physicalDeviceHandle (physicalDevice))
(pPProperties))
pProperties <- lift $ peekCStruct @PhysicalDeviceProperties pPProperties
pure $ (pProperties)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties
:: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()
getPhysicalDeviceQueueFamilyProperties :: forall io
. (MonadIO io)
=>
PhysicalDevice
-> io (("queueFamilyProperties" ::: Vector QueueFamilyProperties))
getPhysicalDeviceQueueFamilyProperties :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice
-> io ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
getPhysicalDeviceQueueFamilyProperties PhysicalDevice
physicalDevice = IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> io ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> io ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> (ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> io ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> io ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> io ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDeviceQueueFamilyPropertiesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceQueueFamilyPropertiesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
pVkGetPhysicalDeviceQueueFamilyProperties (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: PhysicalDevice -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) IO ()
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) IO ())
-> FN_vkVoidFunction
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceQueueFamilyPropertiesPtr FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceQueueFamilyProperties is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceQueueFamilyProperties' :: Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction
vkGetPhysicalDeviceQueueFamilyProperties' = FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
-> Ptr PhysicalDevice_T
-> Ptr Word32
-> Ptr QueueFamilyProperties
-> FN_vkVoidFunction
mkVkGetPhysicalDeviceQueueFamilyProperties FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr QueueFamilyProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceQueueFamilyPropertiesPtr
let physicalDevice' :: Ptr PhysicalDevice_T
physicalDevice' = PhysicalDevice -> Ptr PhysicalDevice_T
physicalDeviceHandle (PhysicalDevice
physicalDevice)
pPQueueFamilyPropertyCount <- ((Ptr Word32
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
(Ptr Word32)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Word32
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
(Ptr Word32))
-> ((Ptr Word32
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties)
IO
(Ptr Word32)
forall a b. (a -> b) -> a -> b
$ IO (Ptr Word32)
-> (Ptr Word32 -> FN_vkVoidFunction)
-> (Ptr Word32
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @Word32 Int
4) Ptr Word32 -> FN_vkVoidFunction
forall a. Ptr a -> FN_vkVoidFunction
free
lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyProperties" (vkGetPhysicalDeviceQueueFamilyProperties'
physicalDevice'
(pPQueueFamilyPropertyCount)
(nullPtr))
pQueueFamilyPropertyCount <- lift $ peek @Word32 pPQueueFamilyPropertyCount
pPQueueFamilyProperties <- ContT $ bracket (callocBytes @QueueFamilyProperties ((fromIntegral (pQueueFamilyPropertyCount)) * 24)) free
_ <- traverse (\Int
i -> ((()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) IO ())
-> ((()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ContT
("queueFamilyProperties" ::: Vector QueueFamilyProperties) IO ()
forall a b. (a -> b) -> a -> b
$ Ptr QueueFamilyProperties
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall b. Ptr QueueFamilyProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> IO b -> IO b
pokeZeroCStruct (Ptr QueueFamilyProperties
pPQueueFamilyProperties Ptr QueueFamilyProperties -> Int -> Ptr QueueFamilyProperties
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
24) :: Ptr QueueFamilyProperties) (IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ((()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> (()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-> ()
-> IO ("queueFamilyProperties" ::: Vector QueueFamilyProperties)
forall a b. (a -> b) -> a -> b
$ ())) [0..(fromIntegral (pQueueFamilyPropertyCount)) - 1]
lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyProperties" (vkGetPhysicalDeviceQueueFamilyProperties'
physicalDevice'
(pPQueueFamilyPropertyCount)
((pPQueueFamilyProperties)))
pQueueFamilyPropertyCount' <- lift $ peek @Word32 pPQueueFamilyPropertyCount
pQueueFamilyProperties' <- lift $ generateM (fromIntegral (pQueueFamilyPropertyCount')) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @QueueFamilyProperties (((Ptr QueueFamilyProperties
pPQueueFamilyProperties) Ptr QueueFamilyProperties -> Int -> Ptr QueueFamilyProperties
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
24 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr QueueFamilyProperties)))
pure $ (pQueueFamilyProperties')
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceMemoryProperties
:: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()
getPhysicalDeviceMemoryProperties :: forall io
. (MonadIO io)
=>
PhysicalDevice
-> io (PhysicalDeviceMemoryProperties)
getPhysicalDeviceMemoryProperties :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice -> io PhysicalDeviceMemoryProperties
getPhysicalDeviceMemoryProperties PhysicalDevice
physicalDevice = IO PhysicalDeviceMemoryProperties
-> io PhysicalDeviceMemoryProperties
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO PhysicalDeviceMemoryProperties
-> io PhysicalDeviceMemoryProperties)
-> (ContT
PhysicalDeviceMemoryProperties IO PhysicalDeviceMemoryProperties
-> IO PhysicalDeviceMemoryProperties)
-> ContT
PhysicalDeviceMemoryProperties IO PhysicalDeviceMemoryProperties
-> io PhysicalDeviceMemoryProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
PhysicalDeviceMemoryProperties IO PhysicalDeviceMemoryProperties
-> IO PhysicalDeviceMemoryProperties
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
PhysicalDeviceMemoryProperties IO PhysicalDeviceMemoryProperties
-> io PhysicalDeviceMemoryProperties)
-> ContT
PhysicalDeviceMemoryProperties IO PhysicalDeviceMemoryProperties
-> io PhysicalDeviceMemoryProperties
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDeviceMemoryPropertiesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceMemoryPropertiesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
pVkGetPhysicalDeviceMemoryProperties (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: PhysicalDevice -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT PhysicalDeviceMemoryProperties IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT PhysicalDeviceMemoryProperties m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT PhysicalDeviceMemoryProperties IO ())
-> FN_vkVoidFunction -> ContT PhysicalDeviceMemoryProperties IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceMemoryPropertiesPtr FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceMemoryProperties is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceMemoryProperties' :: Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction
vkGetPhysicalDeviceMemoryProperties' = FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
-> Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties
-> FN_vkVoidFunction
mkVkGetPhysicalDeviceMemoryProperties FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceMemoryProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceMemoryPropertiesPtr
pPMemoryProperties <- ((Ptr PhysicalDeviceMemoryProperties
-> IO PhysicalDeviceMemoryProperties)
-> IO PhysicalDeviceMemoryProperties)
-> ContT
PhysicalDeviceMemoryProperties
IO
(Ptr PhysicalDeviceMemoryProperties)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @PhysicalDeviceMemoryProperties)
lift $ traceAroundEvent "vkGetPhysicalDeviceMemoryProperties" (vkGetPhysicalDeviceMemoryProperties'
(physicalDeviceHandle (physicalDevice))
(pPMemoryProperties))
pMemoryProperties <- lift $ peekCStruct @PhysicalDeviceMemoryProperties pPMemoryProperties
pure $ (pMemoryProperties)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceFeatures
:: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()
getPhysicalDeviceFeatures :: forall io
. (MonadIO io)
=>
PhysicalDevice
-> io (PhysicalDeviceFeatures)
getPhysicalDeviceFeatures :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice -> io PhysicalDeviceFeatures
getPhysicalDeviceFeatures PhysicalDevice
physicalDevice = IO PhysicalDeviceFeatures -> io PhysicalDeviceFeatures
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO PhysicalDeviceFeatures -> io PhysicalDeviceFeatures)
-> (ContT PhysicalDeviceFeatures IO PhysicalDeviceFeatures
-> IO PhysicalDeviceFeatures)
-> ContT PhysicalDeviceFeatures IO PhysicalDeviceFeatures
-> io PhysicalDeviceFeatures
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT PhysicalDeviceFeatures IO PhysicalDeviceFeatures
-> IO PhysicalDeviceFeatures
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT PhysicalDeviceFeatures IO PhysicalDeviceFeatures
-> io PhysicalDeviceFeatures)
-> ContT PhysicalDeviceFeatures IO PhysicalDeviceFeatures
-> io PhysicalDeviceFeatures
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDeviceFeaturesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
vkGetPhysicalDeviceFeaturesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
pVkGetPhysicalDeviceFeatures (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: PhysicalDevice -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT PhysicalDeviceFeatures IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT PhysicalDeviceFeatures m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT PhysicalDeviceFeatures IO ())
-> FN_vkVoidFunction -> ContT PhysicalDeviceFeatures IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
vkGetPhysicalDeviceFeaturesPtr FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceFeatures is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceFeatures' :: Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction
vkGetPhysicalDeviceFeatures' = FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
-> Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures
-> FN_vkVoidFunction
mkVkGetPhysicalDeviceFeatures FunPtr
(Ptr PhysicalDevice_T
-> Ptr PhysicalDeviceFeatures -> FN_vkVoidFunction)
vkGetPhysicalDeviceFeaturesPtr
pPFeatures <- ((Ptr PhysicalDeviceFeatures -> IO PhysicalDeviceFeatures)
-> IO PhysicalDeviceFeatures)
-> ContT PhysicalDeviceFeatures IO (Ptr PhysicalDeviceFeatures)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @PhysicalDeviceFeatures)
lift $ traceAroundEvent "vkGetPhysicalDeviceFeatures" (vkGetPhysicalDeviceFeatures'
(physicalDeviceHandle (physicalDevice))
(pPFeatures))
pFeatures <- lift $ peekCStruct @PhysicalDeviceFeatures pPFeatures
pure $ (pFeatures)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceFormatProperties
:: FunPtr (Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()) -> Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()
getPhysicalDeviceFormatProperties :: forall io
. (MonadIO io)
=>
PhysicalDevice
->
Format
-> io (FormatProperties)
getPhysicalDeviceFormatProperties :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice -> Format -> io FormatProperties
getPhysicalDeviceFormatProperties PhysicalDevice
physicalDevice
Format
format = IO FormatProperties -> io FormatProperties
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO FormatProperties -> io FormatProperties)
-> (ContT FormatProperties IO FormatProperties
-> IO FormatProperties)
-> ContT FormatProperties IO FormatProperties
-> io FormatProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT FormatProperties IO FormatProperties -> IO FormatProperties
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT FormatProperties IO FormatProperties -> io FormatProperties)
-> ContT FormatProperties IO FormatProperties
-> io FormatProperties
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDeviceFormatPropertiesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceFormatPropertiesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
pVkGetPhysicalDeviceFormatProperties (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: PhysicalDevice -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT FormatProperties IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT FormatProperties m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT FormatProperties IO ())
-> FN_vkVoidFunction -> ContT FormatProperties IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceFormatPropertiesPtr FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
-> FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceFormatProperties is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceFormatProperties' :: Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction
vkGetPhysicalDeviceFormatProperties' = FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
-> Ptr PhysicalDevice_T
-> Format
-> Ptr FormatProperties
-> FN_vkVoidFunction
mkVkGetPhysicalDeviceFormatProperties FunPtr
(Ptr PhysicalDevice_T
-> Format -> Ptr FormatProperties -> FN_vkVoidFunction)
vkGetPhysicalDeviceFormatPropertiesPtr
pPFormatProperties <- ((Ptr FormatProperties -> IO FormatProperties)
-> IO FormatProperties)
-> ContT FormatProperties IO (Ptr FormatProperties)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @FormatProperties)
lift $ traceAroundEvent "vkGetPhysicalDeviceFormatProperties" (vkGetPhysicalDeviceFormatProperties'
(physicalDeviceHandle (physicalDevice))
(format)
(pPFormatProperties))
pFormatProperties <- lift $ peekCStruct @FormatProperties pPFormatProperties
pure $ (pFormatProperties)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceImageFormatProperties
:: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result) -> Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result
getPhysicalDeviceImageFormatProperties :: forall io
. (MonadIO io)
=>
PhysicalDevice
->
Format
->
ImageType
->
ImageTiling
->
ImageUsageFlags
->
ImageCreateFlags
-> io (ImageFormatProperties)
getPhysicalDeviceImageFormatProperties :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> io ImageFormatProperties
getPhysicalDeviceImageFormatProperties PhysicalDevice
physicalDevice
Format
format
ImageType
type'
ImageTiling
tiling
ImageUsageFlags
usage
ImageCreateFlags
flags = IO ImageFormatProperties -> io ImageFormatProperties
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ImageFormatProperties -> io ImageFormatProperties)
-> (ContT ImageFormatProperties IO ImageFormatProperties
-> IO ImageFormatProperties)
-> ContT ImageFormatProperties IO ImageFormatProperties
-> io ImageFormatProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT ImageFormatProperties IO ImageFormatProperties
-> IO ImageFormatProperties
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT ImageFormatProperties IO ImageFormatProperties
-> io ImageFormatProperties)
-> ContT ImageFormatProperties IO ImageFormatProperties
-> io ImageFormatProperties
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDeviceImageFormatPropertiesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
vkGetPhysicalDeviceImageFormatPropertiesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
pVkGetPhysicalDeviceImageFormatProperties (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: PhysicalDevice -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
FN_vkVoidFunction -> ContT ImageFormatProperties IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ImageFormatProperties m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT ImageFormatProperties IO ())
-> FN_vkVoidFunction -> ContT ImageFormatProperties IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
vkGetPhysicalDeviceImageFormatPropertiesPtr FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
-> FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
forall a. FunPtr a
nullFunPtr) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceImageFormatProperties is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceImageFormatProperties' :: Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result
vkGetPhysicalDeviceImageFormatProperties' = FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
-> Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result
mkVkGetPhysicalDeviceImageFormatProperties FunPtr
(Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> Ptr ImageFormatProperties
-> IO Result)
vkGetPhysicalDeviceImageFormatPropertiesPtr
pPImageFormatProperties <- ((Ptr ImageFormatProperties -> IO ImageFormatProperties)
-> IO ImageFormatProperties)
-> ContT ImageFormatProperties IO (Ptr ImageFormatProperties)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @ImageFormatProperties)
r <- lift $ traceAroundEvent "vkGetPhysicalDeviceImageFormatProperties" (vkGetPhysicalDeviceImageFormatProperties'
(physicalDeviceHandle (physicalDevice))
(format)
(type')
(tiling)
(usage)
(flags)
(pPImageFormatProperties))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pImageFormatProperties <- lift $ peekCStruct @ImageFormatProperties pPImageFormatProperties
pure $ (pImageFormatProperties)
data PhysicalDeviceProperties = PhysicalDeviceProperties
{
PhysicalDeviceProperties -> Word32
apiVersion :: Word32
,
PhysicalDeviceProperties -> Word32
driverVersion :: Word32
,
PhysicalDeviceProperties -> Word32
vendorID :: Word32
,
PhysicalDeviceProperties -> Word32
deviceID :: Word32
,
PhysicalDeviceProperties -> PhysicalDeviceType
deviceType :: PhysicalDeviceType
,
PhysicalDeviceProperties -> "name" ::: ByteString
deviceName :: ByteString
,
PhysicalDeviceProperties -> "name" ::: ByteString
pipelineCacheUUID :: ByteString
,
PhysicalDeviceProperties -> PhysicalDeviceLimits
limits :: PhysicalDeviceLimits
,
PhysicalDeviceProperties -> PhysicalDeviceSparseProperties
sparseProperties :: PhysicalDeviceSparseProperties
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceProperties)
#endif
deriving instance Show PhysicalDeviceProperties
instance ToCStruct PhysicalDeviceProperties where
withCStruct :: forall b.
PhysicalDeviceProperties
-> (Ptr PhysicalDeviceProperties -> IO b) -> IO b
withCStruct PhysicalDeviceProperties
x Ptr PhysicalDeviceProperties -> IO b
f = Int -> (Ptr PhysicalDeviceProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
824 ((Ptr PhysicalDeviceProperties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceProperties
p -> Ptr PhysicalDeviceProperties
-> PhysicalDeviceProperties -> IO b -> IO b
forall b.
Ptr PhysicalDeviceProperties
-> PhysicalDeviceProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceProperties
p PhysicalDeviceProperties
x (Ptr PhysicalDeviceProperties -> IO b
f Ptr PhysicalDeviceProperties
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceProperties
-> PhysicalDeviceProperties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceProperties
p PhysicalDeviceProperties{Word32
"name" ::: ByteString
PhysicalDeviceType
PhysicalDeviceSparseProperties
PhysicalDeviceLimits
apiVersion :: PhysicalDeviceProperties -> Word32
driverVersion :: PhysicalDeviceProperties -> Word32
vendorID :: PhysicalDeviceProperties -> Word32
deviceID :: PhysicalDeviceProperties -> Word32
deviceType :: PhysicalDeviceProperties -> PhysicalDeviceType
deviceName :: PhysicalDeviceProperties -> "name" ::: ByteString
pipelineCacheUUID :: PhysicalDeviceProperties -> "name" ::: ByteString
limits :: PhysicalDeviceProperties -> PhysicalDeviceLimits
sparseProperties :: PhysicalDeviceProperties -> PhysicalDeviceSparseProperties
apiVersion :: Word32
driverVersion :: Word32
vendorID :: Word32
deviceID :: Word32
deviceType :: PhysicalDeviceType
deviceName :: "name" ::: ByteString
pipelineCacheUUID :: "name" ::: ByteString
limits :: PhysicalDeviceLimits
sparseProperties :: PhysicalDeviceSparseProperties
..} IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
apiVersion)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
driverVersion)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Word32
vendorID)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Word32
deviceID)
Ptr PhysicalDeviceType -> PhysicalDeviceType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr PhysicalDeviceType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PhysicalDeviceType)) (PhysicalDeviceType
deviceType)
Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n CChar)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
pokeFixedLengthNullTerminatedByteString ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties
-> Int -> Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) ("name" ::: ByteString
deviceName)
Ptr (FixedArray UUID_SIZE Word8)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
pokeFixedLengthByteString ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties
-> Int -> Ptr (FixedArray UUID_SIZE Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr (FixedArray UUID_SIZE Word8))) ("name" ::: ByteString
pipelineCacheUUID)
Ptr PhysicalDeviceLimits
-> PhysicalDeviceLimits -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr PhysicalDeviceLimits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
296 :: Ptr PhysicalDeviceLimits)) (PhysicalDeviceLimits
limits)
Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties
-> Int -> Ptr PhysicalDeviceSparseProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
800 :: Ptr PhysicalDeviceSparseProperties)) (PhysicalDeviceSparseProperties
sparseProperties)
IO b
f
cStructSize :: Int
cStructSize = Int
824
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceProperties
p IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr PhysicalDeviceType -> PhysicalDeviceType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr PhysicalDeviceType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PhysicalDeviceType)) (PhysicalDeviceType
forall a. Zero a => a
zero)
Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n CChar)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
pokeFixedLengthNullTerminatedByteString ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties
-> Int -> Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) ("name" ::: ByteString
forall a. Monoid a => a
mempty)
Ptr (FixedArray UUID_SIZE Word8)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8)
-> ("name" ::: ByteString) -> FN_vkVoidFunction
pokeFixedLengthByteString ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties
-> Int -> Ptr (FixedArray UUID_SIZE Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr (FixedArray UUID_SIZE Word8))) ("name" ::: ByteString
forall a. Monoid a => a
mempty)
Ptr PhysicalDeviceLimits
-> PhysicalDeviceLimits -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr PhysicalDeviceLimits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
296 :: Ptr PhysicalDeviceLimits)) (PhysicalDeviceLimits
forall a. Zero a => a
zero)
Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties
-> Int -> Ptr PhysicalDeviceSparseProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
800 :: Ptr PhysicalDeviceSparseProperties)) (PhysicalDeviceSparseProperties
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceProperties where
peekCStruct :: Ptr PhysicalDeviceProperties -> IO PhysicalDeviceProperties
peekCStruct Ptr PhysicalDeviceProperties
p = do
apiVersion <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceProperties
p Ptr PhysicalDeviceProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32))
driverVersion <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
deviceType <- peek @PhysicalDeviceType ((p `plusPtr` 16 :: Ptr PhysicalDeviceType))
deviceName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))))
pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8)))
limits <- peekCStruct @PhysicalDeviceLimits ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits))
sparseProperties <- peekCStruct @PhysicalDeviceSparseProperties ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties))
pure $ PhysicalDeviceProperties
apiVersion
driverVersion
vendorID
deviceID
deviceType
deviceName
pipelineCacheUUID
limits
sparseProperties
instance Storable PhysicalDeviceProperties where
sizeOf :: PhysicalDeviceProperties -> Int
sizeOf ~PhysicalDeviceProperties
_ = Int
824
alignment :: PhysicalDeviceProperties -> Int
alignment ~PhysicalDeviceProperties
_ = Int
8
peek :: Ptr PhysicalDeviceProperties -> IO PhysicalDeviceProperties
peek = Ptr PhysicalDeviceProperties -> IO PhysicalDeviceProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceProperties
-> PhysicalDeviceProperties -> FN_vkVoidFunction
poke Ptr PhysicalDeviceProperties
ptr PhysicalDeviceProperties
poked = Ptr PhysicalDeviceProperties
-> PhysicalDeviceProperties
-> FN_vkVoidFunction
-> FN_vkVoidFunction
forall b.
Ptr PhysicalDeviceProperties
-> PhysicalDeviceProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceProperties
ptr PhysicalDeviceProperties
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceProperties where
zero :: PhysicalDeviceProperties
zero = Word32
-> Word32
-> Word32
-> Word32
-> PhysicalDeviceType
-> ("name" ::: ByteString)
-> ("name" ::: ByteString)
-> PhysicalDeviceLimits
-> PhysicalDeviceSparseProperties
-> PhysicalDeviceProperties
PhysicalDeviceProperties
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
PhysicalDeviceType
forall a. Zero a => a
zero
"name" ::: ByteString
forall a. Monoid a => a
mempty
"name" ::: ByteString
forall a. Monoid a => a
mempty
PhysicalDeviceLimits
forall a. Zero a => a
zero
PhysicalDeviceSparseProperties
forall a. Zero a => a
zero
data ApplicationInfo = ApplicationInfo
{
ApplicationInfo -> Maybe ("name" ::: ByteString)
applicationName :: Maybe ByteString
,
ApplicationInfo -> Word32
applicationVersion :: Word32
,
ApplicationInfo -> Maybe ("name" ::: ByteString)
engineName :: Maybe ByteString
,
ApplicationInfo -> Word32
engineVersion :: Word32
,
ApplicationInfo -> Word32
apiVersion :: Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ApplicationInfo)
#endif
deriving instance Show ApplicationInfo
instance ToCStruct ApplicationInfo where
withCStruct :: forall b. ApplicationInfo -> (Ptr ApplicationInfo -> IO b) -> IO b
withCStruct ApplicationInfo
x Ptr ApplicationInfo -> IO b
f = Int -> (Ptr ApplicationInfo -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
48 ((Ptr ApplicationInfo -> IO b) -> IO b)
-> (Ptr ApplicationInfo -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ApplicationInfo
p -> Ptr ApplicationInfo -> ApplicationInfo -> IO b -> IO b
forall b. Ptr ApplicationInfo -> ApplicationInfo -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ApplicationInfo
p ApplicationInfo
x (Ptr ApplicationInfo -> IO b
f Ptr ApplicationInfo
p)
pokeCStruct :: forall b. Ptr ApplicationInfo -> ApplicationInfo -> IO b -> IO b
pokeCStruct Ptr ApplicationInfo
p ApplicationInfo{Maybe ("name" ::: ByteString)
Word32
applicationName :: ApplicationInfo -> Maybe ("name" ::: ByteString)
applicationVersion :: ApplicationInfo -> Word32
engineName :: ApplicationInfo -> Maybe ("name" ::: ByteString)
engineVersion :: ApplicationInfo -> Word32
apiVersion :: ApplicationInfo -> Word32
applicationName :: Maybe ("name" ::: ByteString)
applicationVersion :: Word32
engineName :: Maybe ("name" ::: ByteString)
engineVersion :: Word32
apiVersion :: Word32
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
FN_vkVoidFunction -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT b IO ())
-> FN_vkVoidFunction -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_APPLICATION_INFO)
FN_vkVoidFunction -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT b IO ())
-> FN_vkVoidFunction -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
pApplicationName'' <- case (Maybe ("name" ::: ByteString)
applicationName) of
Maybe ("name" ::: ByteString)
Nothing -> ("pName" ::: Ptr CChar) -> ContT b IO ("pName" ::: Ptr CChar)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pName" ::: Ptr CChar
forall a. Ptr a
nullPtr
Just "name" ::: ByteString
j -> ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar))
-> ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO b) -> IO b
forall a.
("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO a) -> IO a
useAsCString ("name" ::: ByteString
j)
lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pApplicationName''
lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (applicationVersion)
pEngineName'' <- case (engineName) of
Maybe ("name" ::: ByteString)
Nothing -> ("pName" ::: Ptr CChar) -> ContT b IO ("pName" ::: Ptr CChar)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pName" ::: Ptr CChar
forall a. Ptr a
nullPtr
Just "name" ::: ByteString
j -> ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar))
-> ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO b) -> IO b
forall a.
("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO a) -> IO a
useAsCString ("name" ::: ByteString
j)
lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pEngineName''
lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (engineVersion)
lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (apiVersion)
lift $ f
cStructSize :: Int
cStructSize = Int
48
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ApplicationInfo -> IO b -> IO b
pokeZeroCStruct Ptr ApplicationInfo
p IO b
f = do
Ptr StructureType -> StructureType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_APPLICATION_INFO)
Ptr (Ptr ()) -> Ptr () -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ApplicationInfo where
peekCStruct :: Ptr ApplicationInfo -> IO ApplicationInfo
peekCStruct Ptr ApplicationInfo
p = do
pApplicationName <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr CChar) ((Ptr ApplicationInfo
p Ptr ApplicationInfo -> Int -> Ptr ("pName" ::: Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr CChar)))
pApplicationName' <- maybePeek (\"pName" ::: Ptr CChar
j -> ("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString)
packCString ("pName" ::: Ptr CChar
j)) pApplicationName
applicationVersion <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
pEngineName <- peek @(Ptr CChar) ((p `plusPtr` 32 :: Ptr (Ptr CChar)))
pEngineName' <- maybePeek (\"pName" ::: Ptr CChar
j -> ("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString)
packCString ("pName" ::: Ptr CChar
j)) pEngineName
engineVersion <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
apiVersion <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
pure $ ApplicationInfo
pApplicationName'
applicationVersion
pEngineName'
engineVersion
apiVersion
instance Zero ApplicationInfo where
zero :: ApplicationInfo
zero = Maybe ("name" ::: ByteString)
-> Word32
-> Maybe ("name" ::: ByteString)
-> Word32
-> Word32
-> ApplicationInfo
ApplicationInfo
Maybe ("name" ::: ByteString)
forall a. Maybe a
Nothing
Word32
forall a. Zero a => a
zero
Maybe ("name" ::: ByteString)
forall a. Maybe a
Nothing
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
data InstanceCreateInfo (es :: [Type]) = InstanceCreateInfo
{
forall (es :: [*]). InstanceCreateInfo es -> Chain es
next :: Chain es
,
forall (es :: [*]). InstanceCreateInfo es -> InstanceCreateFlags
flags :: InstanceCreateFlags
,
forall (es :: [*]). InstanceCreateInfo es -> Maybe ApplicationInfo
applicationInfo :: Maybe ApplicationInfo
,
forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
enabledLayerNames :: Vector ByteString
,
forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
enabledExtensionNames :: Vector ByteString
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (InstanceCreateInfo (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (InstanceCreateInfo es)
instance Extensible InstanceCreateInfo where
extensibleTypeName :: String
extensibleTypeName = String
"InstanceCreateInfo"
setNext :: forall (ds :: [*]) (es :: [*]).
InstanceCreateInfo ds -> Chain es -> InstanceCreateInfo es
setNext InstanceCreateInfo{Maybe ApplicationInfo
Vector ("name" ::: ByteString)
InstanceCreateFlags
Chain ds
next :: forall (es :: [*]). InstanceCreateInfo es -> Chain es
flags :: forall (es :: [*]). InstanceCreateInfo es -> InstanceCreateFlags
applicationInfo :: forall (es :: [*]). InstanceCreateInfo es -> Maybe ApplicationInfo
enabledLayerNames :: forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
enabledExtensionNames :: forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
next :: Chain ds
flags :: InstanceCreateFlags
applicationInfo :: Maybe ApplicationInfo
enabledLayerNames :: Vector ("name" ::: ByteString)
enabledExtensionNames :: Vector ("name" ::: ByteString)
..} Chain es
next' = InstanceCreateInfo{next :: Chain es
next = Chain es
next', Maybe ApplicationInfo
Vector ("name" ::: ByteString)
InstanceCreateFlags
flags :: InstanceCreateFlags
applicationInfo :: Maybe ApplicationInfo
enabledLayerNames :: Vector ("name" ::: ByteString)
enabledExtensionNames :: Vector ("name" ::: ByteString)
flags :: InstanceCreateFlags
applicationInfo :: Maybe ApplicationInfo
enabledLayerNames :: Vector ("name" ::: ByteString)
enabledExtensionNames :: Vector ("name" ::: ByteString)
..}
getNext :: forall (es :: [*]). InstanceCreateInfo es -> Chain es
getNext InstanceCreateInfo{Maybe ApplicationInfo
Vector ("name" ::: ByteString)
InstanceCreateFlags
Chain es
next :: forall (es :: [*]). InstanceCreateInfo es -> Chain es
flags :: forall (es :: [*]). InstanceCreateInfo es -> InstanceCreateFlags
applicationInfo :: forall (es :: [*]). InstanceCreateInfo es -> Maybe ApplicationInfo
enabledLayerNames :: forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
enabledExtensionNames :: forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
next :: Chain es
flags :: InstanceCreateFlags
applicationInfo :: Maybe ApplicationInfo
enabledLayerNames :: Vector ("name" ::: ByteString)
enabledExtensionNames :: Vector ("name" ::: ByteString)
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends InstanceCreateInfo e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends InstanceCreateInfo e => b) -> Maybe b
extends proxy e
_ Extends InstanceCreateInfo e => b
f
| Just e :~: DirectDriverLoadingListLUNARG
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @DirectDriverLoadingListLUNARG = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Just e :~: ExportMetalObjectCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @ExportMetalObjectCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Just e :~: DebugUtilsMessengerCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @DebugUtilsMessengerCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Just e :~: LayerSettingsCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @LayerSettingsCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Just e :~: ValidationFeaturesEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @ValidationFeaturesEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Just e :~: ValidationFlagsEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @ValidationFlagsEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Just e :~: DebugReportCallbackCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @DebugReportCallbackCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends InstanceCreateInfo e => b
f
| Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss InstanceCreateInfo es
, PokeChain es ) => ToCStruct (InstanceCreateInfo es) where
withCStruct :: forall b.
InstanceCreateInfo es
-> (Ptr (InstanceCreateInfo es) -> IO b) -> IO b
withCStruct InstanceCreateInfo es
x Ptr (InstanceCreateInfo es) -> IO b
f = Int -> (Ptr (InstanceCreateInfo es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
64 ((Ptr (InstanceCreateInfo es) -> IO b) -> IO b)
-> (Ptr (InstanceCreateInfo es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (InstanceCreateInfo es)
p -> Ptr (InstanceCreateInfo es)
-> InstanceCreateInfo es -> IO b -> IO b
forall b.
Ptr (InstanceCreateInfo es)
-> InstanceCreateInfo es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (InstanceCreateInfo es)
p InstanceCreateInfo es
x (Ptr (InstanceCreateInfo es) -> IO b
f Ptr (InstanceCreateInfo es)
p)
pokeCStruct :: forall b.
Ptr (InstanceCreateInfo es)
-> InstanceCreateInfo es -> IO b -> IO b
pokeCStruct Ptr (InstanceCreateInfo es)
p InstanceCreateInfo{Maybe ApplicationInfo
Vector ("name" ::: ByteString)
InstanceCreateFlags
Chain es
next :: forall (es :: [*]). InstanceCreateInfo es -> Chain es
flags :: forall (es :: [*]). InstanceCreateInfo es -> InstanceCreateFlags
applicationInfo :: forall (es :: [*]). InstanceCreateInfo es -> Maybe ApplicationInfo
enabledLayerNames :: forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
enabledExtensionNames :: forall (es :: [*]).
InstanceCreateInfo es -> Vector ("name" ::: ByteString)
next :: Chain es
flags :: InstanceCreateFlags
applicationInfo :: Maybe ApplicationInfo
enabledLayerNames :: Vector ("name" ::: ByteString)
enabledExtensionNames :: Vector ("name" ::: ByteString)
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
FN_vkVoidFunction -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT b IO ())
-> FN_vkVoidFunction -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr (InstanceCreateInfo es)
p Ptr (InstanceCreateInfo es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
lift $ poke ((p `plusPtr` 16 :: Ptr InstanceCreateFlags)) (flags)
pApplicationInfo'' <- case (applicationInfo) of
Maybe ApplicationInfo
Nothing -> Ptr ApplicationInfo -> ContT b IO (Ptr ApplicationInfo)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr ApplicationInfo
forall a. Ptr a
nullPtr
Just ApplicationInfo
j -> ((Ptr ApplicationInfo -> IO b) -> IO b)
-> ContT b IO (Ptr ApplicationInfo)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ApplicationInfo -> IO b) -> IO b)
-> ContT b IO (Ptr ApplicationInfo))
-> ((Ptr ApplicationInfo -> IO b) -> IO b)
-> ContT b IO (Ptr ApplicationInfo)
forall a b. (a -> b) -> a -> b
$ ApplicationInfo -> (Ptr ApplicationInfo -> IO b) -> IO b
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b. ApplicationInfo -> (Ptr ApplicationInfo -> IO b) -> IO b
withCStruct (ApplicationInfo
j)
lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo))) pApplicationInfo''
lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledLayerNames)) :: Word32))
pPpEnabledLayerNames' <- ContT $ allocaBytes @(Ptr CChar) ((Data.Vector.length (enabledLayerNames)) * 8)
Data.Vector.imapM_ (\Int
i "name" ::: ByteString
e -> do
ppEnabledLayerNames'' <- ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar))
-> ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO b) -> IO b
forall a.
("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO a) -> IO a
useAsCString ("name" ::: ByteString
e)
lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (enabledLayerNames)
lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')
lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledExtensionNames)) :: Word32))
pPpEnabledExtensionNames' <- ContT $ allocaBytes @(Ptr CChar) ((Data.Vector.length (enabledExtensionNames)) * 8)
Data.Vector.imapM_ (\Int
i "name" ::: ByteString
e -> do
ppEnabledExtensionNames'' <- ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar))
-> ((("pName" ::: Ptr CChar) -> IO b) -> IO b)
-> ContT b IO ("pName" ::: Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO b) -> IO b
forall a.
("name" ::: ByteString)
-> (("pName" ::: Ptr CChar) -> IO a) -> IO a
useAsCString ("name" ::: ByteString
e)
lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (enabledExtensionNames)
lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')
lift $ f
cStructSize :: Int
cStructSize = Int
64
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr (InstanceCreateInfo es) -> IO b -> IO b
pokeZeroCStruct Ptr (InstanceCreateInfo es)
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
FN_vkVoidFunction -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (FN_vkVoidFunction -> ContT b IO ())
-> FN_vkVoidFunction -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr (InstanceCreateInfo es)
p Ptr (InstanceCreateInfo es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
lift $ f
instance ( Extendss InstanceCreateInfo es
, PeekChain es ) => FromCStruct (InstanceCreateInfo es) where
peekCStruct :: Ptr (InstanceCreateInfo es) -> IO (InstanceCreateInfo es)
peekCStruct Ptr (InstanceCreateInfo es)
p = do
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (InstanceCreateInfo es)
p Ptr (InstanceCreateInfo es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
next <- peekChain (castPtr pNext)
flags <- peek @InstanceCreateFlags ((p `plusPtr` 16 :: Ptr InstanceCreateFlags))
pApplicationInfo <- peek @(Ptr ApplicationInfo) ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo)))
pApplicationInfo' <- maybePeek (\Ptr ApplicationInfo
j -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ApplicationInfo (Ptr ApplicationInfo
j)) pApplicationInfo
enabledLayerCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
ppEnabledLayerNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar))))
ppEnabledLayerNames' <- generateM (fromIntegral enabledLayerCount) (\Int
i -> ("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString)
packCString (("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString))
-> IO ("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr ("pName" ::: Ptr CChar) -> IO ("pName" ::: Ptr CChar)
forall a. Storable a => Ptr a -> IO a
peek ((Ptr ("pName" ::: Ptr CChar)
ppEnabledLayerNames Ptr ("pName" ::: Ptr CChar) -> Int -> Ptr ("pName" ::: Ptr CChar)
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (Ptr CChar))))
enabledExtensionCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
ppEnabledExtensionNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar))))
ppEnabledExtensionNames' <- generateM (fromIntegral enabledExtensionCount) (\Int
i -> ("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString)
packCString (("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString))
-> IO ("pName" ::: Ptr CChar) -> IO ("name" ::: ByteString)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr ("pName" ::: Ptr CChar) -> IO ("pName" ::: Ptr CChar)
forall a. Storable a => Ptr a -> IO a
peek ((Ptr ("pName" ::: Ptr CChar)
ppEnabledExtensionNames Ptr ("pName" ::: Ptr CChar) -> Int -> Ptr ("pName" ::: Ptr CChar)
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (Ptr CChar))))
pure $ InstanceCreateInfo
next
flags
pApplicationInfo'
ppEnabledLayerNames'
ppEnabledExtensionNames'
instance es ~ '[] => Zero (InstanceCreateInfo es) where
zero :: InstanceCreateInfo es
zero = Chain es
-> InstanceCreateFlags
-> Maybe ApplicationInfo
-> Vector ("name" ::: ByteString)
-> Vector ("name" ::: ByteString)
-> InstanceCreateInfo es
forall (es :: [*]).
Chain es
-> InstanceCreateFlags
-> Maybe ApplicationInfo
-> Vector ("name" ::: ByteString)
-> Vector ("name" ::: ByteString)
-> InstanceCreateInfo es
InstanceCreateInfo
()
InstanceCreateFlags
forall a. Zero a => a
zero
Maybe ApplicationInfo
forall a. Maybe a
Nothing
Vector ("name" ::: ByteString)
forall a. Monoid a => a
mempty
Vector ("name" ::: ByteString)
forall a. Monoid a => a
mempty
data QueueFamilyProperties = QueueFamilyProperties
{
QueueFamilyProperties -> QueueFlags
queueFlags :: QueueFlags
,
QueueFamilyProperties -> Word32
queueCount :: Word32
,
QueueFamilyProperties -> Word32
timestampValidBits :: Word32
,
QueueFamilyProperties -> Extent3D
minImageTransferGranularity :: Extent3D
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (QueueFamilyProperties)
#endif
deriving instance Show QueueFamilyProperties
instance ToCStruct QueueFamilyProperties where
withCStruct :: forall b.
QueueFamilyProperties
-> (Ptr QueueFamilyProperties -> IO b) -> IO b
withCStruct QueueFamilyProperties
x Ptr QueueFamilyProperties -> IO b
f = Int -> (Ptr QueueFamilyProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr QueueFamilyProperties -> IO b) -> IO b)
-> (Ptr QueueFamilyProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr QueueFamilyProperties
p -> Ptr QueueFamilyProperties -> QueueFamilyProperties -> IO b -> IO b
forall b.
Ptr QueueFamilyProperties -> QueueFamilyProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr QueueFamilyProperties
p QueueFamilyProperties
x (Ptr QueueFamilyProperties -> IO b
f Ptr QueueFamilyProperties
p)
pokeCStruct :: forall b.
Ptr QueueFamilyProperties -> QueueFamilyProperties -> IO b -> IO b
pokeCStruct Ptr QueueFamilyProperties
p QueueFamilyProperties{Word32
Extent3D
QueueFlags
queueFlags :: QueueFamilyProperties -> QueueFlags
queueCount :: QueueFamilyProperties -> Word32
timestampValidBits :: QueueFamilyProperties -> Word32
minImageTransferGranularity :: QueueFamilyProperties -> Extent3D
queueFlags :: QueueFlags
queueCount :: Word32
timestampValidBits :: Word32
minImageTransferGranularity :: Extent3D
..} IO b
f = do
Ptr QueueFlags -> QueueFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr QueueFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr QueueFlags)) (QueueFlags
queueFlags)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
queueCount)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Word32
timestampValidBits)
Ptr Extent3D -> Extent3D -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr Extent3D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Extent3D)) (Extent3D
minImageTransferGranularity)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr QueueFamilyProperties -> IO b -> IO b
pokeZeroCStruct Ptr QueueFamilyProperties
p IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Extent3D -> Extent3D -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr Extent3D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Extent3D)) (Extent3D
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct QueueFamilyProperties where
peekCStruct :: Ptr QueueFamilyProperties -> IO QueueFamilyProperties
peekCStruct Ptr QueueFamilyProperties
p = do
queueFlags <- forall a. Storable a => Ptr a -> IO a
peek @QueueFlags ((Ptr QueueFamilyProperties
p Ptr QueueFamilyProperties -> Int -> Ptr QueueFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr QueueFlags))
queueCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
timestampValidBits <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
minImageTransferGranularity <- peekCStruct @Extent3D ((p `plusPtr` 12 :: Ptr Extent3D))
pure $ QueueFamilyProperties
queueFlags
queueCount
timestampValidBits
minImageTransferGranularity
instance Storable QueueFamilyProperties where
sizeOf :: QueueFamilyProperties -> Int
sizeOf ~QueueFamilyProperties
_ = Int
24
alignment :: QueueFamilyProperties -> Int
alignment ~QueueFamilyProperties
_ = Int
4
peek :: Ptr QueueFamilyProperties -> IO QueueFamilyProperties
peek = Ptr QueueFamilyProperties -> IO QueueFamilyProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr QueueFamilyProperties
-> QueueFamilyProperties -> FN_vkVoidFunction
poke Ptr QueueFamilyProperties
ptr QueueFamilyProperties
poked = Ptr QueueFamilyProperties
-> QueueFamilyProperties -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b.
Ptr QueueFamilyProperties -> QueueFamilyProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr QueueFamilyProperties
ptr QueueFamilyProperties
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero QueueFamilyProperties where
zero :: QueueFamilyProperties
zero = QueueFlags -> Word32 -> Word32 -> Extent3D -> QueueFamilyProperties
QueueFamilyProperties
QueueFlags
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Extent3D
forall a. Zero a => a
zero
data PhysicalDeviceMemoryProperties = PhysicalDeviceMemoryProperties
{
PhysicalDeviceMemoryProperties -> Word32
memoryTypeCount :: Word32
,
PhysicalDeviceMemoryProperties -> Vector MemoryType
memoryTypes :: Vector MemoryType
,
PhysicalDeviceMemoryProperties -> Word32
memoryHeapCount :: Word32
,
PhysicalDeviceMemoryProperties -> Vector MemoryHeap
memoryHeaps :: Vector MemoryHeap
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMemoryProperties)
#endif
deriving instance Show PhysicalDeviceMemoryProperties
instance ToCStruct PhysicalDeviceMemoryProperties where
withCStruct :: forall b.
PhysicalDeviceMemoryProperties
-> (Ptr PhysicalDeviceMemoryProperties -> IO b) -> IO b
withCStruct PhysicalDeviceMemoryProperties
x Ptr PhysicalDeviceMemoryProperties -> IO b
f = Int -> (Ptr PhysicalDeviceMemoryProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
520 ((Ptr PhysicalDeviceMemoryProperties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceMemoryProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMemoryProperties
p -> Ptr PhysicalDeviceMemoryProperties
-> PhysicalDeviceMemoryProperties -> IO b -> IO b
forall b.
Ptr PhysicalDeviceMemoryProperties
-> PhysicalDeviceMemoryProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMemoryProperties
p PhysicalDeviceMemoryProperties
x (Ptr PhysicalDeviceMemoryProperties -> IO b
f Ptr PhysicalDeviceMemoryProperties
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceMemoryProperties
-> PhysicalDeviceMemoryProperties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMemoryProperties
p PhysicalDeviceMemoryProperties{Word32
Vector MemoryType
Vector MemoryHeap
memoryTypeCount :: PhysicalDeviceMemoryProperties -> Word32
memoryTypes :: PhysicalDeviceMemoryProperties -> Vector MemoryType
memoryHeapCount :: PhysicalDeviceMemoryProperties -> Word32
memoryHeaps :: PhysicalDeviceMemoryProperties -> Vector MemoryHeap
memoryTypeCount :: Word32
memoryTypes :: Vector MemoryType
memoryHeapCount :: Word32
memoryHeaps :: Vector MemoryHeap
..} IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
memoryTypeCount)
Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless ((Vector MemoryType -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector MemoryType -> Int) -> Vector MemoryType -> Int
forall a b. (a -> b) -> a -> b
$ (Vector MemoryType
memoryTypes)) Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
forall a. Integral a => a
MAX_MEMORY_TYPES) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
(Int -> MemoryType -> FN_vkVoidFunction)
-> Vector MemoryType -> FN_vkVoidFunction
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i MemoryType
e -> Ptr MemoryType -> MemoryType -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr (FixedArray MAX_MEMORY_TYPES MemoryType) -> Ptr MemoryType
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties
-> Int -> Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) Ptr MemoryType -> Int -> Ptr MemoryType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr MemoryType) (MemoryType
e)) (Vector MemoryType
memoryTypes)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
260 :: Ptr Word32)) (Word32
memoryHeapCount)
Bool -> FN_vkVoidFunction -> FN_vkVoidFunction
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless ((Vector MemoryHeap -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector MemoryHeap -> Int) -> Vector MemoryHeap -> Int
forall a b. (a -> b) -> a -> b
$ (Vector MemoryHeap
memoryHeaps)) Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
forall a. Integral a => a
MAX_MEMORY_HEAPS) (FN_vkVoidFunction -> FN_vkVoidFunction)
-> FN_vkVoidFunction -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$
IOException -> FN_vkVoidFunction
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> FN_vkVoidFunction)
-> IOException -> FN_vkVoidFunction
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
(Int -> MemoryHeap -> FN_vkVoidFunction)
-> Vector MemoryHeap -> FN_vkVoidFunction
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i MemoryHeap
e -> Ptr MemoryHeap -> MemoryHeap -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr (FixedArray UUID_SIZE MemoryHeap) -> Ptr MemoryHeap
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties
-> Int -> Ptr (FixedArray UUID_SIZE MemoryHeap)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) Ptr MemoryHeap -> Int -> Ptr MemoryHeap
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
16 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr MemoryHeap) (MemoryHeap
e)) (Vector MemoryHeap
memoryHeaps)
IO b
f
cStructSize :: Int
cStructSize = Int
520
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceMemoryProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMemoryProperties
p IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
260 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceMemoryProperties where
peekCStruct :: Ptr PhysicalDeviceMemoryProperties
-> IO PhysicalDeviceMemoryProperties
peekCStruct Ptr PhysicalDeviceMemoryProperties
p = do
memoryTypeCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32))
memoryTypes <- generateM (MAX_MEMORY_TYPES) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @MemoryType (((forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @MemoryType ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties
-> Int -> Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) Ptr MemoryType -> Int -> Ptr MemoryType
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr MemoryType)))
memoryHeapCount <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))
memoryHeaps <- generateM (MAX_MEMORY_HEAPS) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @MemoryHeap (((forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @MemoryHeap ((Ptr PhysicalDeviceMemoryProperties
p Ptr PhysicalDeviceMemoryProperties
-> Int -> Ptr (FixedArray UUID_SIZE MemoryHeap)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) Ptr MemoryHeap -> Int -> Ptr MemoryHeap
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
16 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr MemoryHeap)))
pure $ PhysicalDeviceMemoryProperties
memoryTypeCount memoryTypes memoryHeapCount memoryHeaps
instance Storable PhysicalDeviceMemoryProperties where
sizeOf :: PhysicalDeviceMemoryProperties -> Int
sizeOf ~PhysicalDeviceMemoryProperties
_ = Int
520
alignment :: PhysicalDeviceMemoryProperties -> Int
alignment ~PhysicalDeviceMemoryProperties
_ = Int
8
peek :: Ptr PhysicalDeviceMemoryProperties
-> IO PhysicalDeviceMemoryProperties
peek = Ptr PhysicalDeviceMemoryProperties
-> IO PhysicalDeviceMemoryProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceMemoryProperties
-> PhysicalDeviceMemoryProperties -> FN_vkVoidFunction
poke Ptr PhysicalDeviceMemoryProperties
ptr PhysicalDeviceMemoryProperties
poked = Ptr PhysicalDeviceMemoryProperties
-> PhysicalDeviceMemoryProperties
-> FN_vkVoidFunction
-> FN_vkVoidFunction
forall b.
Ptr PhysicalDeviceMemoryProperties
-> PhysicalDeviceMemoryProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMemoryProperties
ptr PhysicalDeviceMemoryProperties
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceMemoryProperties where
zero :: PhysicalDeviceMemoryProperties
zero = Word32
-> Vector MemoryType
-> Word32
-> Vector MemoryHeap
-> PhysicalDeviceMemoryProperties
PhysicalDeviceMemoryProperties
Word32
forall a. Zero a => a
zero
Vector MemoryType
forall a. Monoid a => a
mempty
Word32
forall a. Zero a => a
zero
Vector MemoryHeap
forall a. Monoid a => a
mempty
data MemoryType = MemoryType
{
MemoryType -> MemoryPropertyFlags
propertyFlags :: MemoryPropertyFlags
,
MemoryType -> Word32
heapIndex :: Word32
}
deriving (Typeable, MemoryType -> MemoryType -> Bool
(MemoryType -> MemoryType -> Bool)
-> (MemoryType -> MemoryType -> Bool) -> Eq MemoryType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemoryType -> MemoryType -> Bool
== :: MemoryType -> MemoryType -> Bool
$c/= :: MemoryType -> MemoryType -> Bool
/= :: MemoryType -> MemoryType -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MemoryType)
#endif
deriving instance Show MemoryType
instance ToCStruct MemoryType where
withCStruct :: forall b. MemoryType -> (Ptr MemoryType -> IO b) -> IO b
withCStruct MemoryType
x Ptr MemoryType -> IO b
f = Int -> (Ptr MemoryType -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
8 ((Ptr MemoryType -> IO b) -> IO b)
-> (Ptr MemoryType -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr MemoryType
p -> Ptr MemoryType -> MemoryType -> IO b -> IO b
forall b. Ptr MemoryType -> MemoryType -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryType
p MemoryType
x (Ptr MemoryType -> IO b
f Ptr MemoryType
p)
pokeCStruct :: forall b. Ptr MemoryType -> MemoryType -> IO b -> IO b
pokeCStruct Ptr MemoryType
p MemoryType{Word32
MemoryPropertyFlags
propertyFlags :: MemoryType -> MemoryPropertyFlags
heapIndex :: MemoryType -> Word32
propertyFlags :: MemoryPropertyFlags
heapIndex :: Word32
..} IO b
f = do
Ptr MemoryPropertyFlags -> MemoryPropertyFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr MemoryType
p Ptr MemoryType -> Int -> Ptr MemoryPropertyFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr MemoryPropertyFlags)) (MemoryPropertyFlags
propertyFlags)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr MemoryType
p Ptr MemoryType -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
heapIndex)
IO b
f
cStructSize :: Int
cStructSize = Int
8
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr MemoryType -> IO b -> IO b
pokeZeroCStruct Ptr MemoryType
p IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr MemoryType
p Ptr MemoryType -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct MemoryType where
peekCStruct :: Ptr MemoryType -> IO MemoryType
peekCStruct Ptr MemoryType
p = do
propertyFlags <- forall a. Storable a => Ptr a -> IO a
peek @MemoryPropertyFlags ((Ptr MemoryType
p Ptr MemoryType -> Int -> Ptr MemoryPropertyFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr MemoryPropertyFlags))
heapIndex <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
pure $ MemoryType
propertyFlags heapIndex
instance Storable MemoryType where
sizeOf :: MemoryType -> Int
sizeOf ~MemoryType
_ = Int
8
alignment :: MemoryType -> Int
alignment ~MemoryType
_ = Int
4
peek :: Ptr MemoryType -> IO MemoryType
peek = Ptr MemoryType -> IO MemoryType
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr MemoryType -> MemoryType -> FN_vkVoidFunction
poke Ptr MemoryType
ptr MemoryType
poked = Ptr MemoryType
-> MemoryType -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b. Ptr MemoryType -> MemoryType -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryType
ptr MemoryType
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero MemoryType where
zero :: MemoryType
zero = MemoryPropertyFlags -> Word32 -> MemoryType
MemoryType
MemoryPropertyFlags
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
data MemoryHeap = MemoryHeap
{
MemoryHeap -> DeviceSize
size :: DeviceSize
,
MemoryHeap -> MemoryHeapFlags
flags :: MemoryHeapFlags
}
deriving (Typeable, MemoryHeap -> MemoryHeap -> Bool
(MemoryHeap -> MemoryHeap -> Bool)
-> (MemoryHeap -> MemoryHeap -> Bool) -> Eq MemoryHeap
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemoryHeap -> MemoryHeap -> Bool
== :: MemoryHeap -> MemoryHeap -> Bool
$c/= :: MemoryHeap -> MemoryHeap -> Bool
/= :: MemoryHeap -> MemoryHeap -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MemoryHeap)
#endif
deriving instance Show MemoryHeap
instance ToCStruct MemoryHeap where
withCStruct :: forall b. MemoryHeap -> (Ptr MemoryHeap -> IO b) -> IO b
withCStruct MemoryHeap
x Ptr MemoryHeap -> IO b
f = Int -> (Ptr MemoryHeap -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
16 ((Ptr MemoryHeap -> IO b) -> IO b)
-> (Ptr MemoryHeap -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr MemoryHeap
p -> Ptr MemoryHeap -> MemoryHeap -> IO b -> IO b
forall b. Ptr MemoryHeap -> MemoryHeap -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryHeap
p MemoryHeap
x (Ptr MemoryHeap -> IO b
f Ptr MemoryHeap
p)
pokeCStruct :: forall b. Ptr MemoryHeap -> MemoryHeap -> IO b -> IO b
pokeCStruct Ptr MemoryHeap
p MemoryHeap{DeviceSize
MemoryHeapFlags
size :: MemoryHeap -> DeviceSize
flags :: MemoryHeap -> MemoryHeapFlags
size :: DeviceSize
flags :: MemoryHeapFlags
..} IO b
f = do
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr MemoryHeap
p Ptr MemoryHeap -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceSize)) (DeviceSize
size)
Ptr MemoryHeapFlags -> MemoryHeapFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr MemoryHeap
p Ptr MemoryHeap -> Int -> Ptr MemoryHeapFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr MemoryHeapFlags)) (MemoryHeapFlags
flags)
IO b
f
cStructSize :: Int
cStructSize = Int
16
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr MemoryHeap -> IO b -> IO b
pokeZeroCStruct Ptr MemoryHeap
p IO b
f = do
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr MemoryHeap
p Ptr MemoryHeap -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct MemoryHeap where
peekCStruct :: Ptr MemoryHeap -> IO MemoryHeap
peekCStruct Ptr MemoryHeap
p = do
size <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr MemoryHeap
p Ptr MemoryHeap -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceSize))
flags <- peek @MemoryHeapFlags ((p `plusPtr` 8 :: Ptr MemoryHeapFlags))
pure $ MemoryHeap
size flags
instance Storable MemoryHeap where
sizeOf :: MemoryHeap -> Int
sizeOf ~MemoryHeap
_ = Int
16
alignment :: MemoryHeap -> Int
alignment ~MemoryHeap
_ = Int
8
peek :: Ptr MemoryHeap -> IO MemoryHeap
peek = Ptr MemoryHeap -> IO MemoryHeap
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr MemoryHeap -> MemoryHeap -> FN_vkVoidFunction
poke Ptr MemoryHeap
ptr MemoryHeap
poked = Ptr MemoryHeap
-> MemoryHeap -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b. Ptr MemoryHeap -> MemoryHeap -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryHeap
ptr MemoryHeap
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero MemoryHeap where
zero :: MemoryHeap
zero = DeviceSize -> MemoryHeapFlags -> MemoryHeap
MemoryHeap
DeviceSize
forall a. Zero a => a
zero
MemoryHeapFlags
forall a. Zero a => a
zero
data FormatProperties = FormatProperties
{
FormatProperties -> FormatFeatureFlags
linearTilingFeatures :: FormatFeatureFlags
,
FormatProperties -> FormatFeatureFlags
optimalTilingFeatures :: FormatFeatureFlags
,
FormatProperties -> FormatFeatureFlags
bufferFeatures :: FormatFeatureFlags
}
deriving (Typeable, FormatProperties -> FormatProperties -> Bool
(FormatProperties -> FormatProperties -> Bool)
-> (FormatProperties -> FormatProperties -> Bool)
-> Eq FormatProperties
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FormatProperties -> FormatProperties -> Bool
== :: FormatProperties -> FormatProperties -> Bool
$c/= :: FormatProperties -> FormatProperties -> Bool
/= :: FormatProperties -> FormatProperties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (FormatProperties)
#endif
deriving instance Show FormatProperties
instance ToCStruct FormatProperties where
withCStruct :: forall b.
FormatProperties -> (Ptr FormatProperties -> IO b) -> IO b
withCStruct FormatProperties
x Ptr FormatProperties -> IO b
f = Int -> (Ptr FormatProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
12 ((Ptr FormatProperties -> IO b) -> IO b)
-> (Ptr FormatProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr FormatProperties
p -> Ptr FormatProperties -> FormatProperties -> IO b -> IO b
forall b. Ptr FormatProperties -> FormatProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr FormatProperties
p FormatProperties
x (Ptr FormatProperties -> IO b
f Ptr FormatProperties
p)
pokeCStruct :: forall b. Ptr FormatProperties -> FormatProperties -> IO b -> IO b
pokeCStruct Ptr FormatProperties
p FormatProperties{FormatFeatureFlags
linearTilingFeatures :: FormatProperties -> FormatFeatureFlags
optimalTilingFeatures :: FormatProperties -> FormatFeatureFlags
bufferFeatures :: FormatProperties -> FormatFeatureFlags
linearTilingFeatures :: FormatFeatureFlags
optimalTilingFeatures :: FormatFeatureFlags
bufferFeatures :: FormatFeatureFlags
..} IO b
f = do
Ptr FormatFeatureFlags -> FormatFeatureFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr FormatProperties
p Ptr FormatProperties -> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr FormatFeatureFlags)) (FormatFeatureFlags
linearTilingFeatures)
Ptr FormatFeatureFlags -> FormatFeatureFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr FormatProperties
p Ptr FormatProperties -> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr FormatFeatureFlags)) (FormatFeatureFlags
optimalTilingFeatures)
Ptr FormatFeatureFlags -> FormatFeatureFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr FormatProperties
p Ptr FormatProperties -> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr FormatFeatureFlags)) (FormatFeatureFlags
bufferFeatures)
IO b
f
cStructSize :: Int
cStructSize = Int
12
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr FormatProperties -> IO b -> IO b
pokeZeroCStruct Ptr FormatProperties
_ IO b
f = IO b
f
instance FromCStruct FormatProperties where
peekCStruct :: Ptr FormatProperties -> IO FormatProperties
peekCStruct Ptr FormatProperties
p = do
linearTilingFeatures <- forall a. Storable a => Ptr a -> IO a
peek @FormatFeatureFlags ((Ptr FormatProperties
p Ptr FormatProperties -> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr FormatFeatureFlags))
optimalTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 4 :: Ptr FormatFeatureFlags))
bufferFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 8 :: Ptr FormatFeatureFlags))
pure $ FormatProperties
linearTilingFeatures optimalTilingFeatures bufferFeatures
instance Storable FormatProperties where
sizeOf :: FormatProperties -> Int
sizeOf ~FormatProperties
_ = Int
12
alignment :: FormatProperties -> Int
alignment ~FormatProperties
_ = Int
4
peek :: Ptr FormatProperties -> IO FormatProperties
peek = Ptr FormatProperties -> IO FormatProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr FormatProperties -> FormatProperties -> FN_vkVoidFunction
poke Ptr FormatProperties
ptr FormatProperties
poked = Ptr FormatProperties
-> FormatProperties -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b. Ptr FormatProperties -> FormatProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr FormatProperties
ptr FormatProperties
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero FormatProperties where
zero :: FormatProperties
zero = FormatFeatureFlags
-> FormatFeatureFlags -> FormatFeatureFlags -> FormatProperties
FormatProperties
FormatFeatureFlags
forall a. Zero a => a
zero
FormatFeatureFlags
forall a. Zero a => a
zero
FormatFeatureFlags
forall a. Zero a => a
zero
data ImageFormatProperties = ImageFormatProperties
{
ImageFormatProperties -> Extent3D
maxExtent :: Extent3D
,
ImageFormatProperties -> Word32
maxMipLevels :: Word32
,
ImageFormatProperties -> Word32
maxArrayLayers :: Word32
,
ImageFormatProperties -> SampleCountFlags
sampleCounts :: SampleCountFlags
,
ImageFormatProperties -> DeviceSize
maxResourceSize :: DeviceSize
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImageFormatProperties)
#endif
deriving instance Show ImageFormatProperties
instance ToCStruct ImageFormatProperties where
withCStruct :: forall b.
ImageFormatProperties
-> (Ptr ImageFormatProperties -> IO b) -> IO b
withCStruct ImageFormatProperties
x Ptr ImageFormatProperties -> IO b
f = Int -> (Ptr ImageFormatProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr ImageFormatProperties -> IO b) -> IO b)
-> (Ptr ImageFormatProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ImageFormatProperties
p -> Ptr ImageFormatProperties -> ImageFormatProperties -> IO b -> IO b
forall b.
Ptr ImageFormatProperties -> ImageFormatProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageFormatProperties
p ImageFormatProperties
x (Ptr ImageFormatProperties -> IO b
f Ptr ImageFormatProperties
p)
pokeCStruct :: forall b.
Ptr ImageFormatProperties -> ImageFormatProperties -> IO b -> IO b
pokeCStruct Ptr ImageFormatProperties
p ImageFormatProperties{Word32
DeviceSize
Extent3D
SampleCountFlags
maxExtent :: ImageFormatProperties -> Extent3D
maxMipLevels :: ImageFormatProperties -> Word32
maxArrayLayers :: ImageFormatProperties -> Word32
sampleCounts :: ImageFormatProperties -> SampleCountFlags
maxResourceSize :: ImageFormatProperties -> DeviceSize
maxExtent :: Extent3D
maxMipLevels :: Word32
maxArrayLayers :: Word32
sampleCounts :: SampleCountFlags
maxResourceSize :: DeviceSize
..} IO b
f = do
Ptr Extent3D -> Extent3D -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Extent3D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Extent3D)) (Extent3D
maxExtent)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Word32
maxMipLevels)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
maxArrayLayers)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr SampleCountFlags)) (SampleCountFlags
sampleCounts)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceSize)) (DeviceSize
maxResourceSize)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ImageFormatProperties -> IO b -> IO b
pokeZeroCStruct Ptr ImageFormatProperties
p IO b
f = do
Ptr Extent3D -> Extent3D -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Extent3D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Extent3D)) (Extent3D
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ImageFormatProperties where
peekCStruct :: Ptr ImageFormatProperties -> IO ImageFormatProperties
peekCStruct Ptr ImageFormatProperties
p = do
maxExtent <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent3D ((Ptr ImageFormatProperties
p Ptr ImageFormatProperties -> Int -> Ptr Extent3D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Extent3D))
maxMipLevels <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
maxArrayLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
sampleCounts <- peek @SampleCountFlags ((p `plusPtr` 20 :: Ptr SampleCountFlags))
maxResourceSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
pure $ ImageFormatProperties
maxExtent maxMipLevels maxArrayLayers sampleCounts maxResourceSize
instance Storable ImageFormatProperties where
sizeOf :: ImageFormatProperties -> Int
sizeOf ~ImageFormatProperties
_ = Int
32
alignment :: ImageFormatProperties -> Int
alignment ~ImageFormatProperties
_ = Int
8
peek :: Ptr ImageFormatProperties -> IO ImageFormatProperties
peek = Ptr ImageFormatProperties -> IO ImageFormatProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ImageFormatProperties
-> ImageFormatProperties -> FN_vkVoidFunction
poke Ptr ImageFormatProperties
ptr ImageFormatProperties
poked = Ptr ImageFormatProperties
-> ImageFormatProperties -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b.
Ptr ImageFormatProperties -> ImageFormatProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageFormatProperties
ptr ImageFormatProperties
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ImageFormatProperties where
zero :: ImageFormatProperties
zero = Extent3D
-> Word32
-> Word32
-> SampleCountFlags
-> DeviceSize
-> ImageFormatProperties
ImageFormatProperties
Extent3D
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
data PhysicalDeviceFeatures = PhysicalDeviceFeatures
{
PhysicalDeviceFeatures -> Bool
robustBufferAccess :: Bool
,
PhysicalDeviceFeatures -> Bool
fullDrawIndexUint32 :: Bool
,
PhysicalDeviceFeatures -> Bool
imageCubeArray :: Bool
,
PhysicalDeviceFeatures -> Bool
independentBlend :: Bool
,
PhysicalDeviceFeatures -> Bool
geometryShader :: Bool
,
PhysicalDeviceFeatures -> Bool
tessellationShader :: Bool
,
PhysicalDeviceFeatures -> Bool
sampleRateShading :: Bool
,
PhysicalDeviceFeatures -> Bool
dualSrcBlend :: Bool
,
PhysicalDeviceFeatures -> Bool
logicOp :: Bool
,
PhysicalDeviceFeatures -> Bool
multiDrawIndirect :: Bool
,
PhysicalDeviceFeatures -> Bool
drawIndirectFirstInstance :: Bool
,
PhysicalDeviceFeatures -> Bool
depthClamp :: Bool
,
PhysicalDeviceFeatures -> Bool
depthBiasClamp :: Bool
,
PhysicalDeviceFeatures -> Bool
fillModeNonSolid :: Bool
,
PhysicalDeviceFeatures -> Bool
depthBounds :: Bool
,
PhysicalDeviceFeatures -> Bool
wideLines :: Bool
,
PhysicalDeviceFeatures -> Bool
largePoints :: Bool
,
PhysicalDeviceFeatures -> Bool
alphaToOne :: Bool
,
PhysicalDeviceFeatures -> Bool
multiViewport :: Bool
,
PhysicalDeviceFeatures -> Bool
samplerAnisotropy :: Bool
,
PhysicalDeviceFeatures -> Bool
textureCompressionETC2 :: Bool
,
PhysicalDeviceFeatures -> Bool
textureCompressionASTC_LDR :: Bool
,
PhysicalDeviceFeatures -> Bool
textureCompressionBC :: Bool
,
PhysicalDeviceFeatures -> Bool
occlusionQueryPrecise :: Bool
,
PhysicalDeviceFeatures -> Bool
pipelineStatisticsQuery :: Bool
,
PhysicalDeviceFeatures -> Bool
vertexPipelineStoresAndAtomics :: Bool
,
PhysicalDeviceFeatures -> Bool
fragmentStoresAndAtomics :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderTessellationAndGeometryPointSize :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderImageGatherExtended :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderStorageImageExtendedFormats :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderStorageImageMultisample :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderStorageImageReadWithoutFormat :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderStorageImageWriteWithoutFormat :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderUniformBufferArrayDynamicIndexing :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderSampledImageArrayDynamicIndexing :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderStorageBufferArrayDynamicIndexing :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderStorageImageArrayDynamicIndexing :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderClipDistance :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderCullDistance :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderFloat64 :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderInt64 :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderInt16 :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderResourceResidency :: Bool
,
PhysicalDeviceFeatures -> Bool
shaderResourceMinLod :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseBinding :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidencyBuffer :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidencyImage2D :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidencyImage3D :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidency2Samples :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidency4Samples :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidency8Samples :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidency16Samples :: Bool
,
PhysicalDeviceFeatures -> Bool
sparseResidencyAliased :: Bool
,
PhysicalDeviceFeatures -> Bool
variableMultisampleRate :: Bool
,
PhysicalDeviceFeatures -> Bool
inheritedQueries :: Bool
}
deriving (Typeable, PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool
(PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool)
-> (PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool)
-> Eq PhysicalDeviceFeatures
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool
== :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool
$c/= :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool
/= :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceFeatures)
#endif
deriving instance Show PhysicalDeviceFeatures
instance ToCStruct PhysicalDeviceFeatures where
withCStruct :: forall b.
PhysicalDeviceFeatures
-> (Ptr PhysicalDeviceFeatures -> IO b) -> IO b
withCStruct PhysicalDeviceFeatures
x Ptr PhysicalDeviceFeatures -> IO b
f = Int -> (Ptr PhysicalDeviceFeatures -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
220 ((Ptr PhysicalDeviceFeatures -> IO b) -> IO b)
-> (Ptr PhysicalDeviceFeatures -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceFeatures
p -> Ptr PhysicalDeviceFeatures
-> PhysicalDeviceFeatures -> IO b -> IO b
forall b.
Ptr PhysicalDeviceFeatures
-> PhysicalDeviceFeatures -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFeatures
p PhysicalDeviceFeatures
x (Ptr PhysicalDeviceFeatures -> IO b
f Ptr PhysicalDeviceFeatures
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceFeatures
-> PhysicalDeviceFeatures -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFeatures
p PhysicalDeviceFeatures{Bool
robustBufferAccess :: PhysicalDeviceFeatures -> Bool
fullDrawIndexUint32 :: PhysicalDeviceFeatures -> Bool
imageCubeArray :: PhysicalDeviceFeatures -> Bool
independentBlend :: PhysicalDeviceFeatures -> Bool
geometryShader :: PhysicalDeviceFeatures -> Bool
tessellationShader :: PhysicalDeviceFeatures -> Bool
sampleRateShading :: PhysicalDeviceFeatures -> Bool
dualSrcBlend :: PhysicalDeviceFeatures -> Bool
logicOp :: PhysicalDeviceFeatures -> Bool
multiDrawIndirect :: PhysicalDeviceFeatures -> Bool
drawIndirectFirstInstance :: PhysicalDeviceFeatures -> Bool
depthClamp :: PhysicalDeviceFeatures -> Bool
depthBiasClamp :: PhysicalDeviceFeatures -> Bool
fillModeNonSolid :: PhysicalDeviceFeatures -> Bool
depthBounds :: PhysicalDeviceFeatures -> Bool
wideLines :: PhysicalDeviceFeatures -> Bool
largePoints :: PhysicalDeviceFeatures -> Bool
alphaToOne :: PhysicalDeviceFeatures -> Bool
multiViewport :: PhysicalDeviceFeatures -> Bool
samplerAnisotropy :: PhysicalDeviceFeatures -> Bool
textureCompressionETC2 :: PhysicalDeviceFeatures -> Bool
textureCompressionASTC_LDR :: PhysicalDeviceFeatures -> Bool
textureCompressionBC :: PhysicalDeviceFeatures -> Bool
occlusionQueryPrecise :: PhysicalDeviceFeatures -> Bool
pipelineStatisticsQuery :: PhysicalDeviceFeatures -> Bool
vertexPipelineStoresAndAtomics :: PhysicalDeviceFeatures -> Bool
fragmentStoresAndAtomics :: PhysicalDeviceFeatures -> Bool
shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool
shaderImageGatherExtended :: PhysicalDeviceFeatures -> Bool
shaderStorageImageExtendedFormats :: PhysicalDeviceFeatures -> Bool
shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool
shaderStorageImageReadWithoutFormat :: PhysicalDeviceFeatures -> Bool
shaderStorageImageWriteWithoutFormat :: PhysicalDeviceFeatures -> Bool
shaderUniformBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
shaderSampledImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
shaderStorageBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
shaderStorageImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
shaderClipDistance :: PhysicalDeviceFeatures -> Bool
shaderCullDistance :: PhysicalDeviceFeatures -> Bool
shaderFloat64 :: PhysicalDeviceFeatures -> Bool
shaderInt64 :: PhysicalDeviceFeatures -> Bool
shaderInt16 :: PhysicalDeviceFeatures -> Bool
shaderResourceResidency :: PhysicalDeviceFeatures -> Bool
shaderResourceMinLod :: PhysicalDeviceFeatures -> Bool
sparseBinding :: PhysicalDeviceFeatures -> Bool
sparseResidencyBuffer :: PhysicalDeviceFeatures -> Bool
sparseResidencyImage2D :: PhysicalDeviceFeatures -> Bool
sparseResidencyImage3D :: PhysicalDeviceFeatures -> Bool
sparseResidency2Samples :: PhysicalDeviceFeatures -> Bool
sparseResidency4Samples :: PhysicalDeviceFeatures -> Bool
sparseResidency8Samples :: PhysicalDeviceFeatures -> Bool
sparseResidency16Samples :: PhysicalDeviceFeatures -> Bool
sparseResidencyAliased :: PhysicalDeviceFeatures -> Bool
variableMultisampleRate :: PhysicalDeviceFeatures -> Bool
inheritedQueries :: PhysicalDeviceFeatures -> Bool
robustBufferAccess :: Bool
fullDrawIndexUint32 :: Bool
imageCubeArray :: Bool
independentBlend :: Bool
geometryShader :: Bool
tessellationShader :: Bool
sampleRateShading :: Bool
dualSrcBlend :: Bool
logicOp :: Bool
multiDrawIndirect :: Bool
drawIndirectFirstInstance :: Bool
depthClamp :: Bool
depthBiasClamp :: Bool
fillModeNonSolid :: Bool
depthBounds :: Bool
wideLines :: Bool
largePoints :: Bool
alphaToOne :: Bool
multiViewport :: Bool
samplerAnisotropy :: Bool
textureCompressionETC2 :: Bool
textureCompressionASTC_LDR :: Bool
textureCompressionBC :: Bool
occlusionQueryPrecise :: Bool
pipelineStatisticsQuery :: Bool
vertexPipelineStoresAndAtomics :: Bool
fragmentStoresAndAtomics :: Bool
shaderTessellationAndGeometryPointSize :: Bool
shaderImageGatherExtended :: Bool
shaderStorageImageExtendedFormats :: Bool
shaderStorageImageMultisample :: Bool
shaderStorageImageReadWithoutFormat :: Bool
shaderStorageImageWriteWithoutFormat :: Bool
shaderUniformBufferArrayDynamicIndexing :: Bool
shaderSampledImageArrayDynamicIndexing :: Bool
shaderStorageBufferArrayDynamicIndexing :: Bool
shaderStorageImageArrayDynamicIndexing :: Bool
shaderClipDistance :: Bool
shaderCullDistance :: Bool
shaderFloat64 :: Bool
shaderInt64 :: Bool
shaderInt16 :: Bool
shaderResourceResidency :: Bool
shaderResourceMinLod :: Bool
sparseBinding :: Bool
sparseResidencyBuffer :: Bool
sparseResidencyImage2D :: Bool
sparseResidencyImage3D :: Bool
sparseResidency2Samples :: Bool
sparseResidency4Samples :: Bool
sparseResidency8Samples :: Bool
sparseResidency16Samples :: Bool
sparseResidencyAliased :: Bool
variableMultisampleRate :: Bool
inheritedQueries :: Bool
..} IO b
f = do
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
robustBufferAccess))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fullDrawIndexUint32))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
imageCubeArray))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
independentBlend))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
geometryShader))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
tessellationShader))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sampleRateShading))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
dualSrcBlend))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
logicOp))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
multiDrawIndirect))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
drawIndirectFirstInstance))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
depthClamp))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
depthBiasClamp))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fillModeNonSolid))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
depthBounds))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
wideLines))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
largePoints))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
alphaToOne))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
multiViewport))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
samplerAnisotropy))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
textureCompressionETC2))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
textureCompressionASTC_LDR))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
textureCompressionBC))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
occlusionQueryPrecise))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pipelineStatisticsQuery))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vertexPipelineStoresAndAtomics))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fragmentStoresAndAtomics))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderTessellationAndGeometryPointSize))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderImageGatherExtended))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageExtendedFormats))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageMultisample))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageReadWithoutFormat))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageWriteWithoutFormat))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformBufferArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSampledImageArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageBufferArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderClipDistance))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderCullDistance))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFloat64))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInt64))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInt16))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderResourceResidency))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderResourceMinLod))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseBinding))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidencyBuffer))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidencyImage2D))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidencyImage3D))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidency2Samples))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidency4Samples))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidency8Samples))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
204 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidency16Samples))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
sparseResidencyAliased))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
212 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
variableMultisampleRate))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
216 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
inheritedQueries))
IO b
f
cStructSize :: Int
cStructSize = Int
220
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceFeatures -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceFeatures
p IO b
f = do
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
204 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
212 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
216 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceFeatures where
peekCStruct :: Ptr PhysicalDeviceFeatures -> IO PhysicalDeviceFeatures
peekCStruct Ptr PhysicalDeviceFeatures
p = do
robustBufferAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceFeatures
p Ptr PhysicalDeviceFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Bool32))
fullDrawIndexUint32 <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
imageCubeArray <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))
independentBlend <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))
geometryShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
tessellationShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
sampleRateShading <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
dualSrcBlend <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
logicOp <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
multiDrawIndirect <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
drawIndirectFirstInstance <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
depthClamp <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
depthBiasClamp <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
fillModeNonSolid <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
depthBounds <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
wideLines <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
largePoints <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
alphaToOne <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
multiViewport <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
samplerAnisotropy <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
textureCompressionETC2 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
textureCompressionASTC_LDR <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
textureCompressionBC <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
occlusionQueryPrecise <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
pipelineStatisticsQuery <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
vertexPipelineStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))
fragmentStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))
shaderTessellationAndGeometryPointSize <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))
shaderImageGatherExtended <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))
shaderStorageImageExtendedFormats <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))
shaderStorageImageMultisample <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))
shaderStorageImageReadWithoutFormat <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))
shaderStorageImageWriteWithoutFormat <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))
shaderUniformBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))
shaderSampledImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))
shaderStorageBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 140 :: Ptr Bool32))
shaderStorageImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))
shaderClipDistance <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))
shaderCullDistance <- peek @Bool32 ((p `plusPtr` 152 :: Ptr Bool32))
shaderFloat64 <- peek @Bool32 ((p `plusPtr` 156 :: Ptr Bool32))
shaderInt64 <- peek @Bool32 ((p `plusPtr` 160 :: Ptr Bool32))
shaderInt16 <- peek @Bool32 ((p `plusPtr` 164 :: Ptr Bool32))
shaderResourceResidency <- peek @Bool32 ((p `plusPtr` 168 :: Ptr Bool32))
shaderResourceMinLod <- peek @Bool32 ((p `plusPtr` 172 :: Ptr Bool32))
sparseBinding <- peek @Bool32 ((p `plusPtr` 176 :: Ptr Bool32))
sparseResidencyBuffer <- peek @Bool32 ((p `plusPtr` 180 :: Ptr Bool32))
sparseResidencyImage2D <- peek @Bool32 ((p `plusPtr` 184 :: Ptr Bool32))
sparseResidencyImage3D <- peek @Bool32 ((p `plusPtr` 188 :: Ptr Bool32))
sparseResidency2Samples <- peek @Bool32 ((p `plusPtr` 192 :: Ptr Bool32))
sparseResidency4Samples <- peek @Bool32 ((p `plusPtr` 196 :: Ptr Bool32))
sparseResidency8Samples <- peek @Bool32 ((p `plusPtr` 200 :: Ptr Bool32))
sparseResidency16Samples <- peek @Bool32 ((p `plusPtr` 204 :: Ptr Bool32))
sparseResidencyAliased <- peek @Bool32 ((p `plusPtr` 208 :: Ptr Bool32))
variableMultisampleRate <- peek @Bool32 ((p `plusPtr` 212 :: Ptr Bool32))
inheritedQueries <- peek @Bool32 ((p `plusPtr` 216 :: Ptr Bool32))
pure $ PhysicalDeviceFeatures
(bool32ToBool robustBufferAccess)
(bool32ToBool fullDrawIndexUint32)
(bool32ToBool imageCubeArray)
(bool32ToBool independentBlend)
(bool32ToBool geometryShader)
(bool32ToBool tessellationShader)
(bool32ToBool sampleRateShading)
(bool32ToBool dualSrcBlend)
(bool32ToBool logicOp)
(bool32ToBool multiDrawIndirect)
(bool32ToBool drawIndirectFirstInstance)
(bool32ToBool depthClamp)
(bool32ToBool depthBiasClamp)
(bool32ToBool fillModeNonSolid)
(bool32ToBool depthBounds)
(bool32ToBool wideLines)
(bool32ToBool largePoints)
(bool32ToBool alphaToOne)
(bool32ToBool multiViewport)
(bool32ToBool samplerAnisotropy)
(bool32ToBool textureCompressionETC2)
(bool32ToBool textureCompressionASTC_LDR)
(bool32ToBool textureCompressionBC)
(bool32ToBool occlusionQueryPrecise)
(bool32ToBool pipelineStatisticsQuery)
(bool32ToBool vertexPipelineStoresAndAtomics)
(bool32ToBool fragmentStoresAndAtomics)
(bool32ToBool shaderTessellationAndGeometryPointSize)
(bool32ToBool shaderImageGatherExtended)
(bool32ToBool shaderStorageImageExtendedFormats)
(bool32ToBool shaderStorageImageMultisample)
(bool32ToBool shaderStorageImageReadWithoutFormat)
(bool32ToBool shaderStorageImageWriteWithoutFormat)
(bool32ToBool shaderUniformBufferArrayDynamicIndexing)
(bool32ToBool shaderSampledImageArrayDynamicIndexing)
(bool32ToBool shaderStorageBufferArrayDynamicIndexing)
(bool32ToBool shaderStorageImageArrayDynamicIndexing)
(bool32ToBool shaderClipDistance)
(bool32ToBool shaderCullDistance)
(bool32ToBool shaderFloat64)
(bool32ToBool shaderInt64)
(bool32ToBool shaderInt16)
(bool32ToBool shaderResourceResidency)
(bool32ToBool shaderResourceMinLod)
(bool32ToBool sparseBinding)
(bool32ToBool sparseResidencyBuffer)
(bool32ToBool sparseResidencyImage2D)
(bool32ToBool sparseResidencyImage3D)
(bool32ToBool sparseResidency2Samples)
(bool32ToBool sparseResidency4Samples)
(bool32ToBool sparseResidency8Samples)
(bool32ToBool sparseResidency16Samples)
(bool32ToBool sparseResidencyAliased)
(bool32ToBool variableMultisampleRate)
(bool32ToBool inheritedQueries)
instance Storable PhysicalDeviceFeatures where
sizeOf :: PhysicalDeviceFeatures -> Int
sizeOf ~PhysicalDeviceFeatures
_ = Int
220
alignment :: PhysicalDeviceFeatures -> Int
alignment ~PhysicalDeviceFeatures
_ = Int
4
peek :: Ptr PhysicalDeviceFeatures -> IO PhysicalDeviceFeatures
peek = Ptr PhysicalDeviceFeatures -> IO PhysicalDeviceFeatures
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceFeatures
-> PhysicalDeviceFeatures -> FN_vkVoidFunction
poke Ptr PhysicalDeviceFeatures
ptr PhysicalDeviceFeatures
poked = Ptr PhysicalDeviceFeatures
-> PhysicalDeviceFeatures -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b.
Ptr PhysicalDeviceFeatures
-> PhysicalDeviceFeatures -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFeatures
ptr PhysicalDeviceFeatures
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceFeatures where
zero :: PhysicalDeviceFeatures
zero = Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceFeatures
PhysicalDeviceFeatures
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PhysicalDeviceSparseProperties = PhysicalDeviceSparseProperties
{
PhysicalDeviceSparseProperties -> Bool
residencyStandard2DBlockShape :: Bool
,
PhysicalDeviceSparseProperties -> Bool
residencyStandard2DMultisampleBlockShape :: Bool
,
PhysicalDeviceSparseProperties -> Bool
residencyStandard3DBlockShape :: Bool
,
PhysicalDeviceSparseProperties -> Bool
residencyAlignedMipSize :: Bool
,
PhysicalDeviceSparseProperties -> Bool
residencyNonResidentStrict :: Bool
}
deriving (Typeable, PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool
(PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool)
-> (PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool)
-> Eq PhysicalDeviceSparseProperties
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool
== :: PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool
$c/= :: PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool
/= :: PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceSparseProperties)
#endif
deriving instance Show PhysicalDeviceSparseProperties
instance ToCStruct PhysicalDeviceSparseProperties where
withCStruct :: forall b.
PhysicalDeviceSparseProperties
-> (Ptr PhysicalDeviceSparseProperties -> IO b) -> IO b
withCStruct PhysicalDeviceSparseProperties
x Ptr PhysicalDeviceSparseProperties -> IO b
f = Int -> (Ptr PhysicalDeviceSparseProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
20 ((Ptr PhysicalDeviceSparseProperties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceSparseProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceSparseProperties
p -> Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> IO b -> IO b
forall b.
Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSparseProperties
p PhysicalDeviceSparseProperties
x (Ptr PhysicalDeviceSparseProperties -> IO b
f Ptr PhysicalDeviceSparseProperties
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSparseProperties
p PhysicalDeviceSparseProperties{Bool
residencyStandard2DBlockShape :: PhysicalDeviceSparseProperties -> Bool
residencyStandard2DMultisampleBlockShape :: PhysicalDeviceSparseProperties -> Bool
residencyStandard3DBlockShape :: PhysicalDeviceSparseProperties -> Bool
residencyAlignedMipSize :: PhysicalDeviceSparseProperties -> Bool
residencyNonResidentStrict :: PhysicalDeviceSparseProperties -> Bool
residencyStandard2DBlockShape :: Bool
residencyStandard2DMultisampleBlockShape :: Bool
residencyStandard3DBlockShape :: Bool
residencyAlignedMipSize :: Bool
residencyNonResidentStrict :: Bool
..} IO b
f = do
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
residencyStandard2DBlockShape))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
residencyStandard2DMultisampleBlockShape))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
residencyStandard3DBlockShape))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
residencyAlignedMipSize))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
residencyNonResidentStrict))
IO b
f
cStructSize :: Int
cStructSize = Int
20
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceSparseProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceSparseProperties
p IO b
f = do
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceSparseProperties where
peekCStruct :: Ptr PhysicalDeviceSparseProperties
-> IO PhysicalDeviceSparseProperties
peekCStruct Ptr PhysicalDeviceSparseProperties
p = do
residencyStandard2DBlockShape <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceSparseProperties
p Ptr PhysicalDeviceSparseProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Bool32))
residencyStandard2DMultisampleBlockShape <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
residencyStandard3DBlockShape <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))
residencyAlignedMipSize <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))
residencyNonResidentStrict <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
pure $ PhysicalDeviceSparseProperties
(bool32ToBool residencyStandard2DBlockShape)
(bool32ToBool residencyStandard2DMultisampleBlockShape)
(bool32ToBool residencyStandard3DBlockShape)
(bool32ToBool residencyAlignedMipSize)
(bool32ToBool residencyNonResidentStrict)
instance Storable PhysicalDeviceSparseProperties where
sizeOf :: PhysicalDeviceSparseProperties -> Int
sizeOf ~PhysicalDeviceSparseProperties
_ = Int
20
alignment :: PhysicalDeviceSparseProperties -> Int
alignment ~PhysicalDeviceSparseProperties
_ = Int
4
peek :: Ptr PhysicalDeviceSparseProperties
-> IO PhysicalDeviceSparseProperties
peek = Ptr PhysicalDeviceSparseProperties
-> IO PhysicalDeviceSparseProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> FN_vkVoidFunction
poke Ptr PhysicalDeviceSparseProperties
ptr PhysicalDeviceSparseProperties
poked = Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties
-> FN_vkVoidFunction
-> FN_vkVoidFunction
forall b.
Ptr PhysicalDeviceSparseProperties
-> PhysicalDeviceSparseProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSparseProperties
ptr PhysicalDeviceSparseProperties
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceSparseProperties where
zero :: PhysicalDeviceSparseProperties
zero = Bool
-> Bool -> Bool -> Bool -> Bool -> PhysicalDeviceSparseProperties
PhysicalDeviceSparseProperties
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PhysicalDeviceLimits = PhysicalDeviceLimits
{
PhysicalDeviceLimits -> Word32
maxImageDimension1D :: Word32
,
PhysicalDeviceLimits -> Word32
maxImageDimension2D :: Word32
,
PhysicalDeviceLimits -> Word32
maxImageDimension3D :: Word32
,
PhysicalDeviceLimits -> Word32
maxImageDimensionCube :: Word32
,
PhysicalDeviceLimits -> Word32
maxImageArrayLayers :: Word32
,
PhysicalDeviceLimits -> Word32
maxTexelBufferElements :: Word32
,
PhysicalDeviceLimits -> Word32
maxUniformBufferRange :: Word32
,
PhysicalDeviceLimits -> Word32
maxStorageBufferRange :: Word32
,
PhysicalDeviceLimits -> Word32
maxPushConstantsSize :: Word32
,
PhysicalDeviceLimits -> Word32
maxMemoryAllocationCount :: Word32
,
PhysicalDeviceLimits -> Word32
maxSamplerAllocationCount :: Word32
,
PhysicalDeviceLimits -> DeviceSize
bufferImageGranularity :: DeviceSize
,
PhysicalDeviceLimits -> DeviceSize
sparseAddressSpaceSize :: DeviceSize
,
PhysicalDeviceLimits -> Word32
maxBoundDescriptorSets :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageDescriptorSamplers :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageDescriptorUniformBuffers :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageDescriptorStorageBuffers :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageDescriptorSampledImages :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageDescriptorStorageImages :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageDescriptorInputAttachments :: Word32
,
PhysicalDeviceLimits -> Word32
maxPerStageResources :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetSamplers :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetUniformBuffers :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetUniformBuffersDynamic :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetStorageBuffers :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetStorageBuffersDynamic :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetSampledImages :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetStorageImages :: Word32
,
PhysicalDeviceLimits -> Word32
maxDescriptorSetInputAttachments :: Word32
,
PhysicalDeviceLimits -> Word32
maxVertexInputAttributes :: Word32
,
PhysicalDeviceLimits -> Word32
maxVertexInputBindings :: Word32
,
PhysicalDeviceLimits -> Word32
maxVertexInputAttributeOffset :: Word32
,
PhysicalDeviceLimits -> Word32
maxVertexInputBindingStride :: Word32
,
PhysicalDeviceLimits -> Word32
maxVertexOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationGenerationLevel :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationPatchSize :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationControlPerVertexInputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationControlPerVertexOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationControlPerPatchOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationControlTotalOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationEvaluationInputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxTessellationEvaluationOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxGeometryShaderInvocations :: Word32
,
PhysicalDeviceLimits -> Word32
maxGeometryInputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxGeometryOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxGeometryOutputVertices :: Word32
,
PhysicalDeviceLimits -> Word32
maxGeometryTotalOutputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxFragmentInputComponents :: Word32
,
PhysicalDeviceLimits -> Word32
maxFragmentOutputAttachments :: Word32
,
PhysicalDeviceLimits -> Word32
maxFragmentDualSrcAttachments :: Word32
,
PhysicalDeviceLimits -> Word32
maxFragmentCombinedOutputResources :: Word32
,
PhysicalDeviceLimits -> Word32
maxComputeSharedMemorySize :: Word32
,
PhysicalDeviceLimits -> (Word32, Word32, Word32)
maxComputeWorkGroupCount :: (Word32, Word32, Word32)
,
PhysicalDeviceLimits -> Word32
maxComputeWorkGroupInvocations :: Word32
,
PhysicalDeviceLimits -> (Word32, Word32, Word32)
maxComputeWorkGroupSize :: (Word32, Word32, Word32)
,
PhysicalDeviceLimits -> Word32
subPixelPrecisionBits :: Word32
,
PhysicalDeviceLimits -> Word32
subTexelPrecisionBits :: Word32
,
PhysicalDeviceLimits -> Word32
mipmapPrecisionBits :: Word32
,
PhysicalDeviceLimits -> Word32
maxDrawIndexedIndexValue :: Word32
,
PhysicalDeviceLimits -> Word32
maxDrawIndirectCount :: Word32
,
PhysicalDeviceLimits -> Float
maxSamplerLodBias :: Float
,
PhysicalDeviceLimits -> Float
maxSamplerAnisotropy :: Float
,
PhysicalDeviceLimits -> Word32
maxViewports :: Word32
,
PhysicalDeviceLimits -> (Word32, Word32)
maxViewportDimensions :: (Word32, Word32)
,
PhysicalDeviceLimits -> (Float, Float)
viewportBoundsRange :: (Float, Float)
,
PhysicalDeviceLimits -> Word32
viewportSubPixelBits :: Word32
,
PhysicalDeviceLimits -> DeviceSize
minMemoryMapAlignment :: Word64
,
PhysicalDeviceLimits -> DeviceSize
minTexelBufferOffsetAlignment :: DeviceSize
,
PhysicalDeviceLimits -> DeviceSize
minUniformBufferOffsetAlignment :: DeviceSize
,
PhysicalDeviceLimits -> DeviceSize
minStorageBufferOffsetAlignment :: DeviceSize
,
PhysicalDeviceLimits -> Int32
minTexelOffset :: Int32
,
PhysicalDeviceLimits -> Word32
maxTexelOffset :: Word32
,
PhysicalDeviceLimits -> Int32
minTexelGatherOffset :: Int32
,
PhysicalDeviceLimits -> Word32
maxTexelGatherOffset :: Word32
,
PhysicalDeviceLimits -> Float
minInterpolationOffset :: Float
,
PhysicalDeviceLimits -> Float
maxInterpolationOffset :: Float
,
PhysicalDeviceLimits -> Word32
subPixelInterpolationOffsetBits :: Word32
,
PhysicalDeviceLimits -> Word32
maxFramebufferWidth :: Word32
,
PhysicalDeviceLimits -> Word32
maxFramebufferHeight :: Word32
,
PhysicalDeviceLimits -> Word32
maxFramebufferLayers :: Word32
,
PhysicalDeviceLimits -> SampleCountFlags
framebufferColorSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
framebufferDepthSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
framebufferStencilSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
framebufferNoAttachmentsSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> Word32
maxColorAttachments :: Word32
,
PhysicalDeviceLimits -> SampleCountFlags
sampledImageColorSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
sampledImageIntegerSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
sampledImageDepthSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
sampledImageStencilSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> SampleCountFlags
storageImageSampleCounts :: SampleCountFlags
,
PhysicalDeviceLimits -> Word32
maxSampleMaskWords :: Word32
,
PhysicalDeviceLimits -> Bool
timestampComputeAndGraphics :: Bool
,
PhysicalDeviceLimits -> Float
timestampPeriod :: Float
,
PhysicalDeviceLimits -> Word32
maxClipDistances :: Word32
,
PhysicalDeviceLimits -> Word32
maxCullDistances :: Word32
,
PhysicalDeviceLimits -> Word32
maxCombinedClipAndCullDistances :: Word32
,
PhysicalDeviceLimits -> Word32
discreteQueuePriorities :: Word32
,
PhysicalDeviceLimits -> (Float, Float)
pointSizeRange :: (Float, Float)
,
PhysicalDeviceLimits -> (Float, Float)
lineWidthRange :: (Float, Float)
,
PhysicalDeviceLimits -> Float
pointSizeGranularity :: Float
,
PhysicalDeviceLimits -> Float
lineWidthGranularity :: Float
,
PhysicalDeviceLimits -> Bool
strictLines :: Bool
,
PhysicalDeviceLimits -> Bool
standardSampleLocations :: Bool
,
PhysicalDeviceLimits -> DeviceSize
optimalBufferCopyOffsetAlignment :: DeviceSize
,
PhysicalDeviceLimits -> DeviceSize
optimalBufferCopyRowPitchAlignment :: DeviceSize
,
PhysicalDeviceLimits -> DeviceSize
nonCoherentAtomSize :: DeviceSize
}
deriving (Typeable, PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool
(PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool)
-> (PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool)
-> Eq PhysicalDeviceLimits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool
== :: PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool
$c/= :: PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool
/= :: PhysicalDeviceLimits -> PhysicalDeviceLimits -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceLimits)
#endif
deriving instance Show PhysicalDeviceLimits
instance ToCStruct PhysicalDeviceLimits where
withCStruct :: forall b.
PhysicalDeviceLimits -> (Ptr PhysicalDeviceLimits -> IO b) -> IO b
withCStruct PhysicalDeviceLimits
x Ptr PhysicalDeviceLimits -> IO b
f = Int -> (Ptr PhysicalDeviceLimits -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
504 ((Ptr PhysicalDeviceLimits -> IO b) -> IO b)
-> (Ptr PhysicalDeviceLimits -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceLimits
p -> Ptr PhysicalDeviceLimits -> PhysicalDeviceLimits -> IO b -> IO b
forall b.
Ptr PhysicalDeviceLimits -> PhysicalDeviceLimits -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLimits
p PhysicalDeviceLimits
x (Ptr PhysicalDeviceLimits -> IO b
f Ptr PhysicalDeviceLimits
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceLimits -> PhysicalDeviceLimits -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLimits
p PhysicalDeviceLimits{Bool
Float
Int32
Word32
DeviceSize
(Float, Float)
(Word32, Word32)
(Word32, Word32, Word32)
SampleCountFlags
maxImageDimension1D :: PhysicalDeviceLimits -> Word32
maxImageDimension2D :: PhysicalDeviceLimits -> Word32
maxImageDimension3D :: PhysicalDeviceLimits -> Word32
maxImageDimensionCube :: PhysicalDeviceLimits -> Word32
maxImageArrayLayers :: PhysicalDeviceLimits -> Word32
maxTexelBufferElements :: PhysicalDeviceLimits -> Word32
maxUniformBufferRange :: PhysicalDeviceLimits -> Word32
maxStorageBufferRange :: PhysicalDeviceLimits -> Word32
maxPushConstantsSize :: PhysicalDeviceLimits -> Word32
maxMemoryAllocationCount :: PhysicalDeviceLimits -> Word32
maxSamplerAllocationCount :: PhysicalDeviceLimits -> Word32
bufferImageGranularity :: PhysicalDeviceLimits -> DeviceSize
sparseAddressSpaceSize :: PhysicalDeviceLimits -> DeviceSize
maxBoundDescriptorSets :: PhysicalDeviceLimits -> Word32
maxPerStageDescriptorSamplers :: PhysicalDeviceLimits -> Word32
maxPerStageDescriptorUniformBuffers :: PhysicalDeviceLimits -> Word32
maxPerStageDescriptorStorageBuffers :: PhysicalDeviceLimits -> Word32
maxPerStageDescriptorSampledImages :: PhysicalDeviceLimits -> Word32
maxPerStageDescriptorStorageImages :: PhysicalDeviceLimits -> Word32
maxPerStageDescriptorInputAttachments :: PhysicalDeviceLimits -> Word32
maxPerStageResources :: PhysicalDeviceLimits -> Word32
maxDescriptorSetSamplers :: PhysicalDeviceLimits -> Word32
maxDescriptorSetUniformBuffers :: PhysicalDeviceLimits -> Word32
maxDescriptorSetUniformBuffersDynamic :: PhysicalDeviceLimits -> Word32
maxDescriptorSetStorageBuffers :: PhysicalDeviceLimits -> Word32
maxDescriptorSetStorageBuffersDynamic :: PhysicalDeviceLimits -> Word32
maxDescriptorSetSampledImages :: PhysicalDeviceLimits -> Word32
maxDescriptorSetStorageImages :: PhysicalDeviceLimits -> Word32
maxDescriptorSetInputAttachments :: PhysicalDeviceLimits -> Word32
maxVertexInputAttributes :: PhysicalDeviceLimits -> Word32
maxVertexInputBindings :: PhysicalDeviceLimits -> Word32
maxVertexInputAttributeOffset :: PhysicalDeviceLimits -> Word32
maxVertexInputBindingStride :: PhysicalDeviceLimits -> Word32
maxVertexOutputComponents :: PhysicalDeviceLimits -> Word32
maxTessellationGenerationLevel :: PhysicalDeviceLimits -> Word32
maxTessellationPatchSize :: PhysicalDeviceLimits -> Word32
maxTessellationControlPerVertexInputComponents :: PhysicalDeviceLimits -> Word32
maxTessellationControlPerVertexOutputComponents :: PhysicalDeviceLimits -> Word32
maxTessellationControlPerPatchOutputComponents :: PhysicalDeviceLimits -> Word32
maxTessellationControlTotalOutputComponents :: PhysicalDeviceLimits -> Word32
maxTessellationEvaluationInputComponents :: PhysicalDeviceLimits -> Word32
maxTessellationEvaluationOutputComponents :: PhysicalDeviceLimits -> Word32
maxGeometryShaderInvocations :: PhysicalDeviceLimits -> Word32
maxGeometryInputComponents :: PhysicalDeviceLimits -> Word32
maxGeometryOutputComponents :: PhysicalDeviceLimits -> Word32
maxGeometryOutputVertices :: PhysicalDeviceLimits -> Word32
maxGeometryTotalOutputComponents :: PhysicalDeviceLimits -> Word32
maxFragmentInputComponents :: PhysicalDeviceLimits -> Word32
maxFragmentOutputAttachments :: PhysicalDeviceLimits -> Word32
maxFragmentDualSrcAttachments :: PhysicalDeviceLimits -> Word32
maxFragmentCombinedOutputResources :: PhysicalDeviceLimits -> Word32
maxComputeSharedMemorySize :: PhysicalDeviceLimits -> Word32
maxComputeWorkGroupCount :: PhysicalDeviceLimits -> (Word32, Word32, Word32)
maxComputeWorkGroupInvocations :: PhysicalDeviceLimits -> Word32
maxComputeWorkGroupSize :: PhysicalDeviceLimits -> (Word32, Word32, Word32)
subPixelPrecisionBits :: PhysicalDeviceLimits -> Word32
subTexelPrecisionBits :: PhysicalDeviceLimits -> Word32
mipmapPrecisionBits :: PhysicalDeviceLimits -> Word32
maxDrawIndexedIndexValue :: PhysicalDeviceLimits -> Word32
maxDrawIndirectCount :: PhysicalDeviceLimits -> Word32
maxSamplerLodBias :: PhysicalDeviceLimits -> Float
maxSamplerAnisotropy :: PhysicalDeviceLimits -> Float
maxViewports :: PhysicalDeviceLimits -> Word32
maxViewportDimensions :: PhysicalDeviceLimits -> (Word32, Word32)
viewportBoundsRange :: PhysicalDeviceLimits -> (Float, Float)
viewportSubPixelBits :: PhysicalDeviceLimits -> Word32
minMemoryMapAlignment :: PhysicalDeviceLimits -> DeviceSize
minTexelBufferOffsetAlignment :: PhysicalDeviceLimits -> DeviceSize
minUniformBufferOffsetAlignment :: PhysicalDeviceLimits -> DeviceSize
minStorageBufferOffsetAlignment :: PhysicalDeviceLimits -> DeviceSize
minTexelOffset :: PhysicalDeviceLimits -> Int32
maxTexelOffset :: PhysicalDeviceLimits -> Word32
minTexelGatherOffset :: PhysicalDeviceLimits -> Int32
maxTexelGatherOffset :: PhysicalDeviceLimits -> Word32
minInterpolationOffset :: PhysicalDeviceLimits -> Float
maxInterpolationOffset :: PhysicalDeviceLimits -> Float
subPixelInterpolationOffsetBits :: PhysicalDeviceLimits -> Word32
maxFramebufferWidth :: PhysicalDeviceLimits -> Word32
maxFramebufferHeight :: PhysicalDeviceLimits -> Word32
maxFramebufferLayers :: PhysicalDeviceLimits -> Word32
framebufferColorSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
framebufferDepthSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
framebufferStencilSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
framebufferNoAttachmentsSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
maxColorAttachments :: PhysicalDeviceLimits -> Word32
sampledImageColorSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
sampledImageIntegerSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
sampledImageDepthSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
sampledImageStencilSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
storageImageSampleCounts :: PhysicalDeviceLimits -> SampleCountFlags
maxSampleMaskWords :: PhysicalDeviceLimits -> Word32
timestampComputeAndGraphics :: PhysicalDeviceLimits -> Bool
timestampPeriod :: PhysicalDeviceLimits -> Float
maxClipDistances :: PhysicalDeviceLimits -> Word32
maxCullDistances :: PhysicalDeviceLimits -> Word32
maxCombinedClipAndCullDistances :: PhysicalDeviceLimits -> Word32
discreteQueuePriorities :: PhysicalDeviceLimits -> Word32
pointSizeRange :: PhysicalDeviceLimits -> (Float, Float)
lineWidthRange :: PhysicalDeviceLimits -> (Float, Float)
pointSizeGranularity :: PhysicalDeviceLimits -> Float
lineWidthGranularity :: PhysicalDeviceLimits -> Float
strictLines :: PhysicalDeviceLimits -> Bool
standardSampleLocations :: PhysicalDeviceLimits -> Bool
optimalBufferCopyOffsetAlignment :: PhysicalDeviceLimits -> DeviceSize
optimalBufferCopyRowPitchAlignment :: PhysicalDeviceLimits -> DeviceSize
nonCoherentAtomSize :: PhysicalDeviceLimits -> DeviceSize
maxImageDimension1D :: Word32
maxImageDimension2D :: Word32
maxImageDimension3D :: Word32
maxImageDimensionCube :: Word32
maxImageArrayLayers :: Word32
maxTexelBufferElements :: Word32
maxUniformBufferRange :: Word32
maxStorageBufferRange :: Word32
maxPushConstantsSize :: Word32
maxMemoryAllocationCount :: Word32
maxSamplerAllocationCount :: Word32
bufferImageGranularity :: DeviceSize
sparseAddressSpaceSize :: DeviceSize
maxBoundDescriptorSets :: Word32
maxPerStageDescriptorSamplers :: Word32
maxPerStageDescriptorUniformBuffers :: Word32
maxPerStageDescriptorStorageBuffers :: Word32
maxPerStageDescriptorSampledImages :: Word32
maxPerStageDescriptorStorageImages :: Word32
maxPerStageDescriptorInputAttachments :: Word32
maxPerStageResources :: Word32
maxDescriptorSetSamplers :: Word32
maxDescriptorSetUniformBuffers :: Word32
maxDescriptorSetUniformBuffersDynamic :: Word32
maxDescriptorSetStorageBuffers :: Word32
maxDescriptorSetStorageBuffersDynamic :: Word32
maxDescriptorSetSampledImages :: Word32
maxDescriptorSetStorageImages :: Word32
maxDescriptorSetInputAttachments :: Word32
maxVertexInputAttributes :: Word32
maxVertexInputBindings :: Word32
maxVertexInputAttributeOffset :: Word32
maxVertexInputBindingStride :: Word32
maxVertexOutputComponents :: Word32
maxTessellationGenerationLevel :: Word32
maxTessellationPatchSize :: Word32
maxTessellationControlPerVertexInputComponents :: Word32
maxTessellationControlPerVertexOutputComponents :: Word32
maxTessellationControlPerPatchOutputComponents :: Word32
maxTessellationControlTotalOutputComponents :: Word32
maxTessellationEvaluationInputComponents :: Word32
maxTessellationEvaluationOutputComponents :: Word32
maxGeometryShaderInvocations :: Word32
maxGeometryInputComponents :: Word32
maxGeometryOutputComponents :: Word32
maxGeometryOutputVertices :: Word32
maxGeometryTotalOutputComponents :: Word32
maxFragmentInputComponents :: Word32
maxFragmentOutputAttachments :: Word32
maxFragmentDualSrcAttachments :: Word32
maxFragmentCombinedOutputResources :: Word32
maxComputeSharedMemorySize :: Word32
maxComputeWorkGroupCount :: (Word32, Word32, Word32)
maxComputeWorkGroupInvocations :: Word32
maxComputeWorkGroupSize :: (Word32, Word32, Word32)
subPixelPrecisionBits :: Word32
subTexelPrecisionBits :: Word32
mipmapPrecisionBits :: Word32
maxDrawIndexedIndexValue :: Word32
maxDrawIndirectCount :: Word32
maxSamplerLodBias :: Float
maxSamplerAnisotropy :: Float
maxViewports :: Word32
maxViewportDimensions :: (Word32, Word32)
viewportBoundsRange :: (Float, Float)
viewportSubPixelBits :: Word32
minMemoryMapAlignment :: DeviceSize
minTexelBufferOffsetAlignment :: DeviceSize
minUniformBufferOffsetAlignment :: DeviceSize
minStorageBufferOffsetAlignment :: DeviceSize
minTexelOffset :: Int32
maxTexelOffset :: Word32
minTexelGatherOffset :: Int32
maxTexelGatherOffset :: Word32
minInterpolationOffset :: Float
maxInterpolationOffset :: Float
subPixelInterpolationOffsetBits :: Word32
maxFramebufferWidth :: Word32
maxFramebufferHeight :: Word32
maxFramebufferLayers :: Word32
framebufferColorSampleCounts :: SampleCountFlags
framebufferDepthSampleCounts :: SampleCountFlags
framebufferStencilSampleCounts :: SampleCountFlags
framebufferNoAttachmentsSampleCounts :: SampleCountFlags
maxColorAttachments :: Word32
sampledImageColorSampleCounts :: SampleCountFlags
sampledImageIntegerSampleCounts :: SampleCountFlags
sampledImageDepthSampleCounts :: SampleCountFlags
sampledImageStencilSampleCounts :: SampleCountFlags
storageImageSampleCounts :: SampleCountFlags
maxSampleMaskWords :: Word32
timestampComputeAndGraphics :: Bool
timestampPeriod :: Float
maxClipDistances :: Word32
maxCullDistances :: Word32
maxCombinedClipAndCullDistances :: Word32
discreteQueuePriorities :: Word32
pointSizeRange :: (Float, Float)
lineWidthRange :: (Float, Float)
pointSizeGranularity :: Float
lineWidthGranularity :: Float
strictLines :: Bool
standardSampleLocations :: Bool
optimalBufferCopyOffsetAlignment :: DeviceSize
optimalBufferCopyRowPitchAlignment :: DeviceSize
nonCoherentAtomSize :: DeviceSize
..} IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
maxImageDimension1D)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
maxImageDimension2D)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Word32
maxImageDimension3D)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Word32
maxImageDimensionCube)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
maxImageArrayLayers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
maxTexelBufferElements)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
maxUniformBufferRange)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Word32
maxStorageBufferRange)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Word32
maxPushConstantsSize)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Word32
maxMemoryAllocationCount)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (Word32
maxSamplerAllocationCount)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceSize)) (DeviceSize
bufferImageGranularity)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceSize)) (DeviceSize
sparseAddressSpaceSize)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word32)) (Word32
maxBoundDescriptorSets)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Word32)) (Word32
maxPerStageDescriptorSamplers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32)) (Word32
maxPerStageDescriptorUniformBuffers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Word32)) (Word32
maxPerStageDescriptorStorageBuffers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Word32)) (Word32
maxPerStageDescriptorSampledImages)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Word32)) (Word32
maxPerStageDescriptorStorageImages)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32)) (Word32
maxPerStageDescriptorInputAttachments)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Word32)) (Word32
maxPerStageResources)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Word32)) (Word32
maxDescriptorSetSamplers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Word32)) (Word32
maxDescriptorSetUniformBuffers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Word32)) (Word32
maxDescriptorSetUniformBuffersDynamic)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Word32)) (Word32
maxDescriptorSetStorageBuffers)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Word32)) (Word32
maxDescriptorSetStorageBuffersDynamic)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Word32)) (Word32
maxDescriptorSetSampledImages)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Word32)) (Word32
maxDescriptorSetStorageImages)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Word32)) (Word32
maxDescriptorSetInputAttachments)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Word32)) (Word32
maxVertexInputAttributes)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Word32)) (Word32
maxVertexInputBindings)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Word32)) (Word32
maxVertexInputAttributeOffset)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Word32)) (Word32
maxVertexInputBindingStride)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Word32)) (Word32
maxVertexOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Word32)) (Word32
maxTessellationGenerationLevel)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Word32)) (Word32
maxTessellationPatchSize)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Word32)) (Word32
maxTessellationControlPerVertexInputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Word32)) (Word32
maxTessellationControlPerVertexOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Word32)) (Word32
maxTessellationControlPerPatchOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Word32)) (Word32
maxTessellationControlTotalOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Word32)) (Word32
maxTessellationEvaluationInputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Word32)) (Word32
maxTessellationEvaluationOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Word32)) (Word32
maxGeometryShaderInvocations)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Word32)) (Word32
maxGeometryInputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Word32)) (Word32
maxGeometryOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Word32)) (Word32
maxGeometryOutputVertices)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Word32)) (Word32
maxGeometryTotalOutputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Word32)) (Word32
maxFragmentInputComponents)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
204 :: Ptr Word32)) (Word32
maxFragmentOutputAttachments)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr Word32)) (Word32
maxFragmentDualSrcAttachments)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
212 :: Ptr Word32)) (Word32
maxFragmentCombinedOutputResources)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
216 :: Ptr Word32)) (Word32
maxComputeSharedMemorySize)
let pMaxComputeWorkGroupCount' :: Ptr Word32
pMaxComputeWorkGroupCount' = Ptr (FixedArray 3 Word32) -> Ptr Word32
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 3 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
220 :: Ptr (FixedArray 3 Word32)))
case ((Word32, Word32, Word32)
maxComputeWorkGroupCount) of
(Word32
e0, Word32
e1, Word32
e2) -> do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupCount' :: Ptr Word32) (Word32
e0)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupCount' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32) (Word32
e1)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupCount' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32) (Word32
e2)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
232 :: Ptr Word32)) (Word32
maxComputeWorkGroupInvocations)
let pMaxComputeWorkGroupSize' :: Ptr Word32
pMaxComputeWorkGroupSize' = Ptr (FixedArray 3 Word32) -> Ptr Word32
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 3 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
236 :: Ptr (FixedArray 3 Word32)))
case ((Word32, Word32, Word32)
maxComputeWorkGroupSize) of
(Word32
e0, Word32
e1, Word32
e2) -> do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupSize' :: Ptr Word32) (Word32
e0)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupSize' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32) (Word32
e1)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupSize' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32) (Word32
e2)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
248 :: Ptr Word32)) (Word32
subPixelPrecisionBits)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
252 :: Ptr Word32)) (Word32
subTexelPrecisionBits)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
256 :: Ptr Word32)) (Word32
mipmapPrecisionBits)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
260 :: Ptr Word32)) (Word32
maxDrawIndexedIndexValue)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
264 :: Ptr Word32)) (Word32
maxDrawIndirectCount)
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
268 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
maxSamplerLodBias))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
272 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
maxSamplerAnisotropy))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr Word32)) (Word32
maxViewports)
let pMaxViewportDimensions' :: Ptr Word32
pMaxViewportDimensions' = Ptr (FixedArray 2 Word32) -> Ptr Word32
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
280 :: Ptr (FixedArray 2 Word32)))
case ((Word32, Word32)
maxViewportDimensions) of
(Word32
e0, Word32
e1) -> do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxViewportDimensions' :: Ptr Word32) (Word32
e0)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxViewportDimensions' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32) (Word32
e1)
let pViewportBoundsRange' :: Ptr CFloat
pViewportBoundsRange' = Ptr (FixedArray 2 CFloat) -> Ptr CFloat
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
288 :: Ptr (FixedArray 2 CFloat)))
case ((Float, Float)
viewportBoundsRange) of
(Float
e0, Float
e1) -> do
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pViewportBoundsRange' :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e0))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pViewportBoundsRange' Ptr CFloat -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e1))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
296 :: Ptr Word32)) (Word32
viewportSubPixelBits)
Ptr CSize -> CSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
304 :: Ptr CSize)) (DeviceSize -> CSize
CSize (DeviceSize
minMemoryMapAlignment))
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
312 :: Ptr DeviceSize)) (DeviceSize
minTexelBufferOffsetAlignment)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
320 :: Ptr DeviceSize)) (DeviceSize
minUniformBufferOffsetAlignment)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
328 :: Ptr DeviceSize)) (DeviceSize
minStorageBufferOffsetAlignment)
Ptr Int32 -> Int32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
336 :: Ptr Int32)) (Int32
minTexelOffset)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
340 :: Ptr Word32)) (Word32
maxTexelOffset)
Ptr Int32 -> Int32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
344 :: Ptr Int32)) (Int32
minTexelGatherOffset)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
348 :: Ptr Word32)) (Word32
maxTexelGatherOffset)
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
352 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
minInterpolationOffset))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
356 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
maxInterpolationOffset))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
360 :: Ptr Word32)) (Word32
subPixelInterpolationOffsetBits)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
364 :: Ptr Word32)) (Word32
maxFramebufferWidth)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
368 :: Ptr Word32)) (Word32
maxFramebufferHeight)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
372 :: Ptr Word32)) (Word32
maxFramebufferLayers)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
376 :: Ptr SampleCountFlags)) (SampleCountFlags
framebufferColorSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
380 :: Ptr SampleCountFlags)) (SampleCountFlags
framebufferDepthSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
384 :: Ptr SampleCountFlags)) (SampleCountFlags
framebufferStencilSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
388 :: Ptr SampleCountFlags)) (SampleCountFlags
framebufferNoAttachmentsSampleCounts)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
392 :: Ptr Word32)) (Word32
maxColorAttachments)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
396 :: Ptr SampleCountFlags)) (SampleCountFlags
sampledImageColorSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
400 :: Ptr SampleCountFlags)) (SampleCountFlags
sampledImageIntegerSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
404 :: Ptr SampleCountFlags)) (SampleCountFlags
sampledImageDepthSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
408 :: Ptr SampleCountFlags)) (SampleCountFlags
sampledImageStencilSampleCounts)
Ptr SampleCountFlags -> SampleCountFlags -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr SampleCountFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
412 :: Ptr SampleCountFlags)) (SampleCountFlags
storageImageSampleCounts)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
416 :: Ptr Word32)) (Word32
maxSampleMaskWords)
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
420 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
timestampComputeAndGraphics))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
424 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
timestampPeriod))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
428 :: Ptr Word32)) (Word32
maxClipDistances)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
432 :: Ptr Word32)) (Word32
maxCullDistances)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
436 :: Ptr Word32)) (Word32
maxCombinedClipAndCullDistances)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
440 :: Ptr Word32)) (Word32
discreteQueuePriorities)
let pPointSizeRange' :: Ptr CFloat
pPointSizeRange' = Ptr (FixedArray 2 CFloat) -> Ptr CFloat
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
444 :: Ptr (FixedArray 2 CFloat)))
case ((Float, Float)
pointSizeRange) of
(Float
e0, Float
e1) -> do
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pPointSizeRange' :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e0))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pPointSizeRange' Ptr CFloat -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e1))
let pLineWidthRange' :: Ptr CFloat
pLineWidthRange' = Ptr (FixedArray 2 CFloat) -> Ptr CFloat
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
452 :: Ptr (FixedArray 2 CFloat)))
case ((Float, Float)
lineWidthRange) of
(Float
e0, Float
e1) -> do
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pLineWidthRange' :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e0))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pLineWidthRange' Ptr CFloat -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e1))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
460 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
pointSizeGranularity))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
464 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
lineWidthGranularity))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
468 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
strictLines))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
472 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
standardSampleLocations))
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
480 :: Ptr DeviceSize)) (DeviceSize
optimalBufferCopyOffsetAlignment)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
488 :: Ptr DeviceSize)) (DeviceSize
optimalBufferCopyRowPitchAlignment)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
496 :: Ptr DeviceSize)) (DeviceSize
nonCoherentAtomSize)
IO b
f
cStructSize :: Int
cStructSize = Int
504
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceLimits -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceLimits
p IO b
f = do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
204 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
212 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
216 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
let pMaxComputeWorkGroupCount' :: Ptr Word32
pMaxComputeWorkGroupCount' = Ptr (FixedArray 3 Word32) -> Ptr Word32
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 3 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
220 :: Ptr (FixedArray 3 Word32)))
case ((Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero)) of
(Word32
e0, Word32
e1, Word32
e2) -> do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupCount' :: Ptr Word32) (Word32
e0)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupCount' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32) (Word32
e1)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupCount' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32) (Word32
e2)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
232 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
let pMaxComputeWorkGroupSize' :: Ptr Word32
pMaxComputeWorkGroupSize' = Ptr (FixedArray 3 Word32) -> Ptr Word32
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 3 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
236 :: Ptr (FixedArray 3 Word32)))
case ((Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero)) of
(Word32
e0, Word32
e1, Word32
e2) -> do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupSize' :: Ptr Word32) (Word32
e0)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupSize' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32) (Word32
e1)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxComputeWorkGroupSize' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32) (Word32
e2)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
248 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
252 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
256 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
260 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
264 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
268 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
272 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
let pMaxViewportDimensions' :: Ptr Word32
pMaxViewportDimensions' = Ptr (FixedArray 2 Word32) -> Ptr Word32
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
280 :: Ptr (FixedArray 2 Word32)))
case ((Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero)) of
(Word32
e0, Word32
e1) -> do
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxViewportDimensions' :: Ptr Word32) (Word32
e0)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr Word32
pMaxViewportDimensions' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32) (Word32
e1)
let pViewportBoundsRange' :: Ptr CFloat
pViewportBoundsRange' = Ptr (FixedArray 2 CFloat) -> Ptr CFloat
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
288 :: Ptr (FixedArray 2 CFloat)))
case ((Float
forall a. Zero a => a
zero, Float
forall a. Zero a => a
zero)) of
(Float
e0, Float
e1) -> do
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pViewportBoundsRange' :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e0))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pViewportBoundsRange' Ptr CFloat -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e1))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
296 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr CSize -> CSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
304 :: Ptr CSize)) (DeviceSize -> CSize
CSize (DeviceSize
forall a. Zero a => a
zero))
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
312 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
320 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
328 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr Int32 -> Int32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
336 :: Ptr Int32)) (Int32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
340 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Int32 -> Int32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
344 :: Ptr Int32)) (Int32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
348 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
352 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
356 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
360 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
364 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
368 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
372 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
392 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
416 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
420 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
424 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
428 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
432 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
436 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
440 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
let pPointSizeRange' :: Ptr CFloat
pPointSizeRange' = Ptr (FixedArray 2 CFloat) -> Ptr CFloat
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
444 :: Ptr (FixedArray 2 CFloat)))
case ((Float
forall a. Zero a => a
zero, Float
forall a. Zero a => a
zero)) of
(Float
e0, Float
e1) -> do
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pPointSizeRange' :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e0))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pPointSizeRange' Ptr CFloat -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e1))
let pLineWidthRange' :: Ptr CFloat
pLineWidthRange' = Ptr (FixedArray 2 CFloat) -> Ptr CFloat
forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
452 :: Ptr (FixedArray 2 CFloat)))
case ((Float
forall a. Zero a => a
zero, Float
forall a. Zero a => a
zero)) of
(Float
e0, Float
e1) -> do
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pLineWidthRange' :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e0))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke (Ptr CFloat
pLineWidthRange' Ptr CFloat -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr CFloat) (Float -> CFloat
CFloat (Float
e1))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
460 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr CFloat -> CFloat -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
464 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
468 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
472 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
480 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
488 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> FN_vkVoidFunction
forall a. Storable a => Ptr a -> a -> FN_vkVoidFunction
poke ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
496 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceLimits where
peekCStruct :: Ptr PhysicalDeviceLimits -> IO PhysicalDeviceLimits
peekCStruct Ptr PhysicalDeviceLimits
p = do
maxImageDimension1D <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32))
maxImageDimension2D <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
maxImageDimension3D <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
maxImageDimensionCube <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
maxImageArrayLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
maxTexelBufferElements <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
maxUniformBufferRange <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
maxStorageBufferRange <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
maxPushConstantsSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
maxMemoryAllocationCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
maxSamplerAllocationCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
bufferImageGranularity <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
sparseAddressSpaceSize <- peek @DeviceSize ((p `plusPtr` 56 :: Ptr DeviceSize))
maxBoundDescriptorSets <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))
maxPerStageDescriptorSamplers <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))
maxPerStageDescriptorUniformBuffers <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
maxPerStageDescriptorStorageBuffers <- peek @Word32 ((p `plusPtr` 76 :: Ptr Word32))
maxPerStageDescriptorSampledImages <- peek @Word32 ((p `plusPtr` 80 :: Ptr Word32))
maxPerStageDescriptorStorageImages <- peek @Word32 ((p `plusPtr` 84 :: Ptr Word32))
maxPerStageDescriptorInputAttachments <- peek @Word32 ((p `plusPtr` 88 :: Ptr Word32))
maxPerStageResources <- peek @Word32 ((p `plusPtr` 92 :: Ptr Word32))
maxDescriptorSetSamplers <- peek @Word32 ((p `plusPtr` 96 :: Ptr Word32))
maxDescriptorSetUniformBuffers <- peek @Word32 ((p `plusPtr` 100 :: Ptr Word32))
maxDescriptorSetUniformBuffersDynamic <- peek @Word32 ((p `plusPtr` 104 :: Ptr Word32))
maxDescriptorSetStorageBuffers <- peek @Word32 ((p `plusPtr` 108 :: Ptr Word32))
maxDescriptorSetStorageBuffersDynamic <- peek @Word32 ((p `plusPtr` 112 :: Ptr Word32))
maxDescriptorSetSampledImages <- peek @Word32 ((p `plusPtr` 116 :: Ptr Word32))
maxDescriptorSetStorageImages <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))
maxDescriptorSetInputAttachments <- peek @Word32 ((p `plusPtr` 124 :: Ptr Word32))
maxVertexInputAttributes <- peek @Word32 ((p `plusPtr` 128 :: Ptr Word32))
maxVertexInputBindings <- peek @Word32 ((p `plusPtr` 132 :: Ptr Word32))
maxVertexInputAttributeOffset <- peek @Word32 ((p `plusPtr` 136 :: Ptr Word32))
maxVertexInputBindingStride <- peek @Word32 ((p `plusPtr` 140 :: Ptr Word32))
maxVertexOutputComponents <- peek @Word32 ((p `plusPtr` 144 :: Ptr Word32))
maxTessellationGenerationLevel <- peek @Word32 ((p `plusPtr` 148 :: Ptr Word32))
maxTessellationPatchSize <- peek @Word32 ((p `plusPtr` 152 :: Ptr Word32))
maxTessellationControlPerVertexInputComponents <- peek @Word32 ((p `plusPtr` 156 :: Ptr Word32))
maxTessellationControlPerVertexOutputComponents <- peek @Word32 ((p `plusPtr` 160 :: Ptr Word32))
maxTessellationControlPerPatchOutputComponents <- peek @Word32 ((p `plusPtr` 164 :: Ptr Word32))
maxTessellationControlTotalOutputComponents <- peek @Word32 ((p `plusPtr` 168 :: Ptr Word32))
maxTessellationEvaluationInputComponents <- peek @Word32 ((p `plusPtr` 172 :: Ptr Word32))
maxTessellationEvaluationOutputComponents <- peek @Word32 ((p `plusPtr` 176 :: Ptr Word32))
maxGeometryShaderInvocations <- peek @Word32 ((p `plusPtr` 180 :: Ptr Word32))
maxGeometryInputComponents <- peek @Word32 ((p `plusPtr` 184 :: Ptr Word32))
maxGeometryOutputComponents <- peek @Word32 ((p `plusPtr` 188 :: Ptr Word32))
maxGeometryOutputVertices <- peek @Word32 ((p `plusPtr` 192 :: Ptr Word32))
maxGeometryTotalOutputComponents <- peek @Word32 ((p `plusPtr` 196 :: Ptr Word32))
maxFragmentInputComponents <- peek @Word32 ((p `plusPtr` 200 :: Ptr Word32))
maxFragmentOutputAttachments <- peek @Word32 ((p `plusPtr` 204 :: Ptr Word32))
maxFragmentDualSrcAttachments <- peek @Word32 ((p `plusPtr` 208 :: Ptr Word32))
maxFragmentCombinedOutputResources <- peek @Word32 ((p `plusPtr` 212 :: Ptr Word32))
maxComputeSharedMemorySize <- peek @Word32 ((p `plusPtr` 216 :: Ptr Word32))
let pmaxComputeWorkGroupCount = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @Word32 ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 3 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
220 :: Ptr (FixedArray 3 Word32)))
maxComputeWorkGroupCount0 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 0 :: Ptr Word32))
maxComputeWorkGroupCount1 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 4 :: Ptr Word32))
maxComputeWorkGroupCount2 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 8 :: Ptr Word32))
maxComputeWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 232 :: Ptr Word32))
let pmaxComputeWorkGroupSize = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @Word32 ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 3 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
236 :: Ptr (FixedArray 3 Word32)))
maxComputeWorkGroupSize0 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))
maxComputeWorkGroupSize1 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))
maxComputeWorkGroupSize2 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))
subPixelPrecisionBits <- peek @Word32 ((p `plusPtr` 248 :: Ptr Word32))
subTexelPrecisionBits <- peek @Word32 ((p `plusPtr` 252 :: Ptr Word32))
mipmapPrecisionBits <- peek @Word32 ((p `plusPtr` 256 :: Ptr Word32))
maxDrawIndexedIndexValue <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))
maxDrawIndirectCount <- peek @Word32 ((p `plusPtr` 264 :: Ptr Word32))
maxSamplerLodBias <- peek @CFloat ((p `plusPtr` 268 :: Ptr CFloat))
maxSamplerAnisotropy <- peek @CFloat ((p `plusPtr` 272 :: Ptr CFloat))
maxViewports <- peek @Word32 ((p `plusPtr` 276 :: Ptr Word32))
let pmaxViewportDimensions = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @Word32 ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
280 :: Ptr (FixedArray 2 Word32)))
maxViewportDimensions0 <- peek @Word32 ((pmaxViewportDimensions `advancePtrBytes` 0 :: Ptr Word32))
maxViewportDimensions1 <- peek @Word32 ((pmaxViewportDimensions `advancePtrBytes` 4 :: Ptr Word32))
let pviewportBoundsRange = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @CFloat ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
288 :: Ptr (FixedArray 2 CFloat)))
viewportBoundsRange0 <- peek @CFloat ((pviewportBoundsRange `advancePtrBytes` 0 :: Ptr CFloat))
viewportBoundsRange1 <- peek @CFloat ((pviewportBoundsRange `advancePtrBytes` 4 :: Ptr CFloat))
viewportSubPixelBits <- peek @Word32 ((p `plusPtr` 296 :: Ptr Word32))
minMemoryMapAlignment <- peek @CSize ((p `plusPtr` 304 :: Ptr CSize))
minTexelBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 312 :: Ptr DeviceSize))
minUniformBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 320 :: Ptr DeviceSize))
minStorageBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 328 :: Ptr DeviceSize))
minTexelOffset <- peek @Int32 ((p `plusPtr` 336 :: Ptr Int32))
maxTexelOffset <- peek @Word32 ((p `plusPtr` 340 :: Ptr Word32))
minTexelGatherOffset <- peek @Int32 ((p `plusPtr` 344 :: Ptr Int32))
maxTexelGatherOffset <- peek @Word32 ((p `plusPtr` 348 :: Ptr Word32))
minInterpolationOffset <- peek @CFloat ((p `plusPtr` 352 :: Ptr CFloat))
maxInterpolationOffset <- peek @CFloat ((p `plusPtr` 356 :: Ptr CFloat))
subPixelInterpolationOffsetBits <- peek @Word32 ((p `plusPtr` 360 :: Ptr Word32))
maxFramebufferWidth <- peek @Word32 ((p `plusPtr` 364 :: Ptr Word32))
maxFramebufferHeight <- peek @Word32 ((p `plusPtr` 368 :: Ptr Word32))
maxFramebufferLayers <- peek @Word32 ((p `plusPtr` 372 :: Ptr Word32))
framebufferColorSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 376 :: Ptr SampleCountFlags))
framebufferDepthSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 380 :: Ptr SampleCountFlags))
framebufferStencilSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 384 :: Ptr SampleCountFlags))
framebufferNoAttachmentsSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 388 :: Ptr SampleCountFlags))
maxColorAttachments <- peek @Word32 ((p `plusPtr` 392 :: Ptr Word32))
sampledImageColorSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 396 :: Ptr SampleCountFlags))
sampledImageIntegerSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 400 :: Ptr SampleCountFlags))
sampledImageDepthSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 404 :: Ptr SampleCountFlags))
sampledImageStencilSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 408 :: Ptr SampleCountFlags))
storageImageSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 412 :: Ptr SampleCountFlags))
maxSampleMaskWords <- peek @Word32 ((p `plusPtr` 416 :: Ptr Word32))
timestampComputeAndGraphics <- peek @Bool32 ((p `plusPtr` 420 :: Ptr Bool32))
timestampPeriod <- peek @CFloat ((p `plusPtr` 424 :: Ptr CFloat))
maxClipDistances <- peek @Word32 ((p `plusPtr` 428 :: Ptr Word32))
maxCullDistances <- peek @Word32 ((p `plusPtr` 432 :: Ptr Word32))
maxCombinedClipAndCullDistances <- peek @Word32 ((p `plusPtr` 436 :: Ptr Word32))
discreteQueuePriorities <- peek @Word32 ((p `plusPtr` 440 :: Ptr Word32))
let ppointSizeRange = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @CFloat ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
444 :: Ptr (FixedArray 2 CFloat)))
pointSizeRange0 <- peek @CFloat ((ppointSizeRange `advancePtrBytes` 0 :: Ptr CFloat))
pointSizeRange1 <- peek @CFloat ((ppointSizeRange `advancePtrBytes` 4 :: Ptr CFloat))
let plineWidthRange = forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr @CFloat ((Ptr PhysicalDeviceLimits
p Ptr PhysicalDeviceLimits -> Int -> Ptr (FixedArray 2 CFloat)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
452 :: Ptr (FixedArray 2 CFloat)))
lineWidthRange0 <- peek @CFloat ((plineWidthRange `advancePtrBytes` 0 :: Ptr CFloat))
lineWidthRange1 <- peek @CFloat ((plineWidthRange `advancePtrBytes` 4 :: Ptr CFloat))
pointSizeGranularity <- peek @CFloat ((p `plusPtr` 460 :: Ptr CFloat))
lineWidthGranularity <- peek @CFloat ((p `plusPtr` 464 :: Ptr CFloat))
strictLines <- peek @Bool32 ((p `plusPtr` 468 :: Ptr Bool32))
standardSampleLocations <- peek @Bool32 ((p `plusPtr` 472 :: Ptr Bool32))
optimalBufferCopyOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 480 :: Ptr DeviceSize))
optimalBufferCopyRowPitchAlignment <- peek @DeviceSize ((p `plusPtr` 488 :: Ptr DeviceSize))
nonCoherentAtomSize <- peek @DeviceSize ((p `plusPtr` 496 :: Ptr DeviceSize))
pure $ PhysicalDeviceLimits
maxImageDimension1D
maxImageDimension2D
maxImageDimension3D
maxImageDimensionCube
maxImageArrayLayers
maxTexelBufferElements
maxUniformBufferRange
maxStorageBufferRange
maxPushConstantsSize
maxMemoryAllocationCount
maxSamplerAllocationCount
bufferImageGranularity
sparseAddressSpaceSize
maxBoundDescriptorSets
maxPerStageDescriptorSamplers
maxPerStageDescriptorUniformBuffers
maxPerStageDescriptorStorageBuffers
maxPerStageDescriptorSampledImages
maxPerStageDescriptorStorageImages
maxPerStageDescriptorInputAttachments
maxPerStageResources
maxDescriptorSetSamplers
maxDescriptorSetUniformBuffers
maxDescriptorSetUniformBuffersDynamic
maxDescriptorSetStorageBuffers
maxDescriptorSetStorageBuffersDynamic
maxDescriptorSetSampledImages
maxDescriptorSetStorageImages
maxDescriptorSetInputAttachments
maxVertexInputAttributes
maxVertexInputBindings
maxVertexInputAttributeOffset
maxVertexInputBindingStride
maxVertexOutputComponents
maxTessellationGenerationLevel
maxTessellationPatchSize
maxTessellationControlPerVertexInputComponents
maxTessellationControlPerVertexOutputComponents
maxTessellationControlPerPatchOutputComponents
maxTessellationControlTotalOutputComponents
maxTessellationEvaluationInputComponents
maxTessellationEvaluationOutputComponents
maxGeometryShaderInvocations
maxGeometryInputComponents
maxGeometryOutputComponents
maxGeometryOutputVertices
maxGeometryTotalOutputComponents
maxFragmentInputComponents
maxFragmentOutputAttachments
maxFragmentDualSrcAttachments
maxFragmentCombinedOutputResources
maxComputeSharedMemorySize
(( maxComputeWorkGroupCount0
, maxComputeWorkGroupCount1
, maxComputeWorkGroupCount2 ))
maxComputeWorkGroupInvocations
(( maxComputeWorkGroupSize0
, maxComputeWorkGroupSize1
, maxComputeWorkGroupSize2 ))
subPixelPrecisionBits
subTexelPrecisionBits
mipmapPrecisionBits
maxDrawIndexedIndexValue
maxDrawIndirectCount
(coerce @CFloat @Float maxSamplerLodBias)
(coerce @CFloat @Float maxSamplerAnisotropy)
maxViewports
((maxViewportDimensions0, maxViewportDimensions1))
(( (coerce @CFloat @Float viewportBoundsRange0)
, (coerce @CFloat @Float viewportBoundsRange1) ))
viewportSubPixelBits
(coerce @CSize @Word64 minMemoryMapAlignment)
minTexelBufferOffsetAlignment
minUniformBufferOffsetAlignment
minStorageBufferOffsetAlignment
minTexelOffset
maxTexelOffset
minTexelGatherOffset
maxTexelGatherOffset
(coerce @CFloat @Float minInterpolationOffset)
(coerce @CFloat @Float maxInterpolationOffset)
subPixelInterpolationOffsetBits
maxFramebufferWidth
maxFramebufferHeight
maxFramebufferLayers
framebufferColorSampleCounts
framebufferDepthSampleCounts
framebufferStencilSampleCounts
framebufferNoAttachmentsSampleCounts
maxColorAttachments
sampledImageColorSampleCounts
sampledImageIntegerSampleCounts
sampledImageDepthSampleCounts
sampledImageStencilSampleCounts
storageImageSampleCounts
maxSampleMaskWords
(bool32ToBool timestampComputeAndGraphics)
(coerce @CFloat @Float timestampPeriod)
maxClipDistances
maxCullDistances
maxCombinedClipAndCullDistances
discreteQueuePriorities
(( (coerce @CFloat @Float pointSizeRange0)
, (coerce @CFloat @Float pointSizeRange1) ))
(( (coerce @CFloat @Float lineWidthRange0)
, (coerce @CFloat @Float lineWidthRange1) ))
(coerce @CFloat @Float pointSizeGranularity)
(coerce @CFloat @Float lineWidthGranularity)
(bool32ToBool strictLines)
(bool32ToBool standardSampleLocations)
optimalBufferCopyOffsetAlignment
optimalBufferCopyRowPitchAlignment
nonCoherentAtomSize
instance Storable PhysicalDeviceLimits where
sizeOf :: PhysicalDeviceLimits -> Int
sizeOf ~PhysicalDeviceLimits
_ = Int
504
alignment :: PhysicalDeviceLimits -> Int
alignment ~PhysicalDeviceLimits
_ = Int
8
peek :: Ptr PhysicalDeviceLimits -> IO PhysicalDeviceLimits
peek = Ptr PhysicalDeviceLimits -> IO PhysicalDeviceLimits
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceLimits
-> PhysicalDeviceLimits -> FN_vkVoidFunction
poke Ptr PhysicalDeviceLimits
ptr PhysicalDeviceLimits
poked = Ptr PhysicalDeviceLimits
-> PhysicalDeviceLimits -> FN_vkVoidFunction -> FN_vkVoidFunction
forall b.
Ptr PhysicalDeviceLimits -> PhysicalDeviceLimits -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLimits
ptr PhysicalDeviceLimits
poked (() -> FN_vkVoidFunction
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceLimits where
zero :: PhysicalDeviceLimits
zero = Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> DeviceSize
-> DeviceSize
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> (Word32, Word32, Word32)
-> Word32
-> (Word32, Word32, Word32)
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Float
-> Float
-> Word32
-> (Word32, Word32)
-> (Float, Float)
-> Word32
-> DeviceSize
-> DeviceSize
-> DeviceSize
-> DeviceSize
-> Int32
-> Word32
-> Int32
-> Word32
-> Float
-> Float
-> Word32
-> Word32
-> Word32
-> Word32
-> SampleCountFlags
-> SampleCountFlags
-> SampleCountFlags
-> SampleCountFlags
-> Word32
-> SampleCountFlags
-> SampleCountFlags
-> SampleCountFlags
-> SampleCountFlags
-> SampleCountFlags
-> Word32
-> Bool
-> Float
-> Word32
-> Word32
-> Word32
-> Word32
-> (Float, Float)
-> (Float, Float)
-> Float
-> Float
-> Bool
-> Bool
-> DeviceSize
-> DeviceSize
-> DeviceSize
-> PhysicalDeviceLimits
PhysicalDeviceLimits
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
(Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero)
Word32
forall a. Zero a => a
zero
(Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero)
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
(Word32
forall a. Zero a => a
zero, Word32
forall a. Zero a => a
zero)
(Float
forall a. Zero a => a
zero, Float
forall a. Zero a => a
zero)
Word32
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
Int32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Int32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
SampleCountFlags
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
(Float
forall a. Zero a => a
zero, Float
forall a. Zero a => a
zero)
(Float
forall a. Zero a => a
zero, Float
forall a. Zero a => a
zero)
Float
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero