{-# language CPP #-}
module Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing ( PhysicalDeviceDescriptorIndexingFeatures(..)
, PhysicalDeviceDescriptorIndexingProperties(..)
, DescriptorSetLayoutBindingFlagsCreateInfo(..)
, DescriptorSetVariableDescriptorCountAllocateInfo(..)
, DescriptorSetVariableDescriptorCountLayoutSupport(..)
, StructureType(..)
, Result(..)
, DescriptorPoolCreateFlagBits(..)
, DescriptorPoolCreateFlags
, DescriptorSetLayoutCreateFlagBits(..)
, DescriptorSetLayoutCreateFlags
, DescriptorBindingFlagBits(..)
, DescriptorBindingFlags
) where
import Control.Monad (unless)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import GHC.IO (throwIO)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
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 qualified Data.Vector (null)
import Data.Typeable (Typeable)
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 Foreign.Ptr (Ptr)
import Data.Word (Word32)
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.Core10.FundamentalTypes (Bool32)
import Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES))
import Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits(..))
import Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)
import Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlagBits(..))
import Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)
import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlagBits(..))
import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Enums.StructureType (StructureType(..))
data PhysicalDeviceDescriptorIndexingFeatures = PhysicalDeviceDescriptorIndexingFeatures
{
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderInputAttachmentArrayDynamicIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderUniformTexelBufferArrayDynamicIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderStorageTexelBufferArrayDynamicIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderUniformBufferArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderSampledImageArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderStorageBufferArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderStorageImageArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderInputAttachmentArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderUniformTexelBufferArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
shaderStorageTexelBufferArrayNonUniformIndexing :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingUniformBufferUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingSampledImageUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingStorageImageUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingStorageBufferUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingUniformTexelBufferUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingStorageTexelBufferUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingUpdateUnusedWhilePending :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingPartiallyBound :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
descriptorBindingVariableDescriptorCount :: Bool
,
PhysicalDeviceDescriptorIndexingFeatures -> Bool
runtimeDescriptorArray :: Bool
}
deriving (Typeable, PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool
(PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool)
-> (PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool)
-> Eq PhysicalDeviceDescriptorIndexingFeatures
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool
$c/= :: PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool
== :: PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool
$c== :: PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceDescriptorIndexingFeatures)
#endif
deriving instance Show PhysicalDeviceDescriptorIndexingFeatures
instance ToCStruct PhysicalDeviceDescriptorIndexingFeatures where
withCStruct :: PhysicalDeviceDescriptorIndexingFeatures
-> (Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b) -> IO b
withCStruct x :: PhysicalDeviceDescriptorIndexingFeatures
x f :: Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 96 8 ((Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b) -> IO b)
-> (Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceDescriptorIndexingFeatures
p -> Ptr PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorIndexingFeatures
p PhysicalDeviceDescriptorIndexingFeatures
x (Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b
f Ptr PhysicalDeviceDescriptorIndexingFeatures
p)
pokeCStruct :: Ptr PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceDescriptorIndexingFeatures
p PhysicalDeviceDescriptorIndexingFeatures{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInputAttachmentArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformTexelBufferArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageTexelBufferArrayDynamicIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformBufferArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSampledImageArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageBufferArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInputAttachmentArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformTexelBufferArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageTexelBufferArrayNonUniformIndexing))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingUniformBufferUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingSampledImageUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingStorageImageUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingStorageBufferUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingUniformTexelBufferUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingStorageTexelBufferUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingUpdateUnusedWhilePending))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingPartiallyBound))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingVariableDescriptorCount))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
runtimeDescriptorArray))
IO b
f
cStructSize :: Int
cStructSize = 96
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceDescriptorIndexingFeatures -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceDescriptorIndexingFeatures
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceDescriptorIndexingFeatures where
peekCStruct :: Ptr PhysicalDeviceDescriptorIndexingFeatures
-> IO PhysicalDeviceDescriptorIndexingFeatures
peekCStruct p :: Ptr PhysicalDeviceDescriptorIndexingFeatures
p = do
Bool32
shaderInputAttachmentArrayDynamicIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32))
Bool32
shaderUniformTexelBufferArrayDynamicIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32))
Bool32
shaderStorageTexelBufferArrayDynamicIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Bool32))
Bool32
shaderUniformBufferArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Bool32))
Bool32
shaderSampledImageArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Bool32))
Bool32
shaderStorageBufferArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Bool32))
Bool32
shaderStorageImageArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Bool32))
Bool32
shaderInputAttachmentArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32))
Bool32
shaderUniformTexelBufferArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Bool32))
Bool32
shaderStorageTexelBufferArrayNonUniformIndexing <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Bool32))
Bool32
descriptorBindingUniformBufferUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Bool32))
Bool32
descriptorBindingSampledImageUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr Bool32))
Bool32
descriptorBindingStorageImageUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Bool32))
Bool32
descriptorBindingStorageBufferUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr Bool32))
Bool32
descriptorBindingUniformTexelBufferUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Bool32))
Bool32
descriptorBindingStorageTexelBufferUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr Bool32))
Bool32
descriptorBindingUpdateUnusedWhilePending <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Bool32))
Bool32
descriptorBindingPartiallyBound <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 84 :: Ptr Bool32))
Bool32
descriptorBindingVariableDescriptorCount <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr Bool32))
Bool32
runtimeDescriptorArray <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingFeatures
p Ptr PhysicalDeviceDescriptorIndexingFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 92 :: Ptr Bool32))
PhysicalDeviceDescriptorIndexingFeatures
-> IO PhysicalDeviceDescriptorIndexingFeatures
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceDescriptorIndexingFeatures
-> IO PhysicalDeviceDescriptorIndexingFeatures)
-> PhysicalDeviceDescriptorIndexingFeatures
-> IO PhysicalDeviceDescriptorIndexingFeatures
forall a b. (a -> b) -> a -> b
$ Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceDescriptorIndexingFeatures
PhysicalDeviceDescriptorIndexingFeatures
(Bool32 -> Bool
bool32ToBool Bool32
shaderInputAttachmentArrayDynamicIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformTexelBufferArrayDynamicIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageTexelBufferArrayDynamicIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformBufferArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderSampledImageArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageBufferArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageImageArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderInputAttachmentArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformTexelBufferArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageTexelBufferArrayNonUniformIndexing) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingUniformBufferUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingSampledImageUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingStorageImageUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingStorageBufferUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingUniformTexelBufferUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingStorageTexelBufferUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingUpdateUnusedWhilePending) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingPartiallyBound) (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingVariableDescriptorCount) (Bool32 -> Bool
bool32ToBool Bool32
runtimeDescriptorArray)
instance Storable PhysicalDeviceDescriptorIndexingFeatures where
sizeOf :: PhysicalDeviceDescriptorIndexingFeatures -> Int
sizeOf ~PhysicalDeviceDescriptorIndexingFeatures
_ = 96
alignment :: PhysicalDeviceDescriptorIndexingFeatures -> Int
alignment ~PhysicalDeviceDescriptorIndexingFeatures
_ = 8
peek :: Ptr PhysicalDeviceDescriptorIndexingFeatures
-> IO PhysicalDeviceDescriptorIndexingFeatures
peek = Ptr PhysicalDeviceDescriptorIndexingFeatures
-> IO PhysicalDeviceDescriptorIndexingFeatures
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> IO ()
poke ptr :: Ptr PhysicalDeviceDescriptorIndexingFeatures
ptr poked :: PhysicalDeviceDescriptorIndexingFeatures
poked = Ptr PhysicalDeviceDescriptorIndexingFeatures
-> PhysicalDeviceDescriptorIndexingFeatures -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorIndexingFeatures
ptr PhysicalDeviceDescriptorIndexingFeatures
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceDescriptorIndexingFeatures where
zero :: PhysicalDeviceDescriptorIndexingFeatures
zero = Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceDescriptorIndexingFeatures
PhysicalDeviceDescriptorIndexingFeatures
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 PhysicalDeviceDescriptorIndexingProperties = PhysicalDeviceDescriptorIndexingProperties
{
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxUpdateAfterBindDescriptorsInAllPools :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
shaderUniformBufferArrayNonUniformIndexingNative :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
shaderSampledImageArrayNonUniformIndexingNative :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
shaderStorageBufferArrayNonUniformIndexingNative :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
shaderStorageImageArrayNonUniformIndexingNative :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
shaderInputAttachmentArrayNonUniformIndexingNative :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
robustBufferAccessUpdateAfterBind :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Bool
quadDivergentImplicitLod :: Bool
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageDescriptorUpdateAfterBindSamplers :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageDescriptorUpdateAfterBindSampledImages :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageDescriptorUpdateAfterBindStorageImages :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxPerStageUpdateAfterBindResources :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindSamplers :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindUniformBuffers :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindStorageBuffers :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindSampledImages :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindStorageImages :: Word32
,
PhysicalDeviceDescriptorIndexingProperties -> Word32
maxDescriptorSetUpdateAfterBindInputAttachments :: Word32
}
deriving (Typeable, PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool
(PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool)
-> (PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool)
-> Eq PhysicalDeviceDescriptorIndexingProperties
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool
$c/= :: PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool
== :: PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool
$c== :: PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceDescriptorIndexingProperties)
#endif
deriving instance Show PhysicalDeviceDescriptorIndexingProperties
instance ToCStruct PhysicalDeviceDescriptorIndexingProperties where
withCStruct :: PhysicalDeviceDescriptorIndexingProperties
-> (Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b) -> IO b
withCStruct x :: PhysicalDeviceDescriptorIndexingProperties
x f :: Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 112 8 ((Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceDescriptorIndexingProperties
p -> Ptr PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorIndexingProperties
p PhysicalDeviceDescriptorIndexingProperties
x (Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b
f Ptr PhysicalDeviceDescriptorIndexingProperties
p)
pokeCStruct :: Ptr PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceDescriptorIndexingProperties
p PhysicalDeviceDescriptorIndexingProperties{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
maxUpdateAfterBindDescriptorsInAllPools)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformBufferArrayNonUniformIndexingNative))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSampledImageArrayNonUniformIndexingNative))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageBufferArrayNonUniformIndexingNative))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageArrayNonUniformIndexingNative))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInputAttachmentArrayNonUniformIndexingNative))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
robustBufferAccessUpdateAfterBind))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
quadDivergentImplicitLod))
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindSamplers)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindSampledImages)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindStorageImages)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Word32)) (Word32
maxPerStageUpdateAfterBindResources)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindSamplers)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindUniformBuffers)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 84 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindStorageBuffers)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 92 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 96 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindSampledImages)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 100 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindStorageImages)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 104 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindInputAttachments)
IO b
f
cStructSize :: Int
cStructSize = 112
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceDescriptorIndexingProperties -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceDescriptorIndexingProperties
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 84 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 92 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 96 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 100 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 104 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceDescriptorIndexingProperties where
peekCStruct :: Ptr PhysicalDeviceDescriptorIndexingProperties
-> IO PhysicalDeviceDescriptorIndexingProperties
peekCStruct p :: Ptr PhysicalDeviceDescriptorIndexingProperties
p = do
Word32
maxUpdateAfterBindDescriptorsInAllPools <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
Bool32
shaderUniformBufferArrayNonUniformIndexingNative <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32))
Bool32
shaderSampledImageArrayNonUniformIndexingNative <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Bool32))
Bool32
shaderStorageBufferArrayNonUniformIndexingNative <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Bool32))
Bool32
shaderStorageImageArrayNonUniformIndexingNative <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Bool32))
Bool32
shaderInputAttachmentArrayNonUniformIndexingNative <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Bool32))
Bool32
robustBufferAccessUpdateAfterBind <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Bool32))
Bool32
quadDivergentImplicitLod <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32))
Word32
maxPerStageDescriptorUpdateAfterBindSamplers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32))
Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Word32))
Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Word32))
Word32
maxPerStageDescriptorUpdateAfterBindSampledImages <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr Word32))
Word32
maxPerStageDescriptorUpdateAfterBindStorageImages <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Word32))
Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr Word32))
Word32
maxPerStageUpdateAfterBindResources <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindSamplers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindUniformBuffers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 84 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindStorageBuffers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 92 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindSampledImages <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 96 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindStorageImages <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 100 :: Ptr Word32))
Word32
maxDescriptorSetUpdateAfterBindInputAttachments <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDescriptorIndexingProperties
p Ptr PhysicalDeviceDescriptorIndexingProperties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 104 :: Ptr Word32))
PhysicalDeviceDescriptorIndexingProperties
-> IO PhysicalDeviceDescriptorIndexingProperties
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceDescriptorIndexingProperties
-> IO PhysicalDeviceDescriptorIndexingProperties)
-> PhysicalDeviceDescriptorIndexingProperties
-> IO PhysicalDeviceDescriptorIndexingProperties
forall a b. (a -> b) -> a -> b
$ Word32
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> PhysicalDeviceDescriptorIndexingProperties
PhysicalDeviceDescriptorIndexingProperties
Word32
maxUpdateAfterBindDescriptorsInAllPools (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformBufferArrayNonUniformIndexingNative) (Bool32 -> Bool
bool32ToBool Bool32
shaderSampledImageArrayNonUniformIndexingNative) (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageBufferArrayNonUniformIndexingNative) (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageImageArrayNonUniformIndexingNative) (Bool32 -> Bool
bool32ToBool Bool32
shaderInputAttachmentArrayNonUniformIndexingNative) (Bool32 -> Bool
bool32ToBool Bool32
robustBufferAccessUpdateAfterBind) (Bool32 -> Bool
bool32ToBool Bool32
quadDivergentImplicitLod) Word32
maxPerStageDescriptorUpdateAfterBindSamplers Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers Word32
maxPerStageDescriptorUpdateAfterBindSampledImages Word32
maxPerStageDescriptorUpdateAfterBindStorageImages Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments Word32
maxPerStageUpdateAfterBindResources Word32
maxDescriptorSetUpdateAfterBindSamplers Word32
maxDescriptorSetUpdateAfterBindUniformBuffers Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic Word32
maxDescriptorSetUpdateAfterBindStorageBuffers Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic Word32
maxDescriptorSetUpdateAfterBindSampledImages Word32
maxDescriptorSetUpdateAfterBindStorageImages Word32
maxDescriptorSetUpdateAfterBindInputAttachments
instance Storable PhysicalDeviceDescriptorIndexingProperties where
sizeOf :: PhysicalDeviceDescriptorIndexingProperties -> Int
sizeOf ~PhysicalDeviceDescriptorIndexingProperties
_ = 112
alignment :: PhysicalDeviceDescriptorIndexingProperties -> Int
alignment ~PhysicalDeviceDescriptorIndexingProperties
_ = 8
peek :: Ptr PhysicalDeviceDescriptorIndexingProperties
-> IO PhysicalDeviceDescriptorIndexingProperties
peek = Ptr PhysicalDeviceDescriptorIndexingProperties
-> IO PhysicalDeviceDescriptorIndexingProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> IO ()
poke ptr :: Ptr PhysicalDeviceDescriptorIndexingProperties
ptr poked :: PhysicalDeviceDescriptorIndexingProperties
poked = Ptr PhysicalDeviceDescriptorIndexingProperties
-> PhysicalDeviceDescriptorIndexingProperties -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorIndexingProperties
ptr PhysicalDeviceDescriptorIndexingProperties
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceDescriptorIndexingProperties where
zero :: PhysicalDeviceDescriptorIndexingProperties
zero = Word32
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> PhysicalDeviceDescriptorIndexingProperties
PhysicalDeviceDescriptorIndexingProperties
Word32
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
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
data DescriptorSetLayoutBindingFlagsCreateInfo = DescriptorSetLayoutBindingFlagsCreateInfo
{
DescriptorSetLayoutBindingFlagsCreateInfo -> Word32
bindingCount :: Word32
,
DescriptorSetLayoutBindingFlagsCreateInfo
-> Vector DescriptorBindingFlags
bindingFlags :: Vector DescriptorBindingFlags
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DescriptorSetLayoutBindingFlagsCreateInfo)
#endif
deriving instance Show DescriptorSetLayoutBindingFlagsCreateInfo
instance ToCStruct DescriptorSetLayoutBindingFlagsCreateInfo where
withCStruct :: DescriptorSetLayoutBindingFlagsCreateInfo
-> (Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b) -> IO b
withCStruct x :: DescriptorSetLayoutBindingFlagsCreateInfo
x f :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b
f = Int
-> Int
-> (Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 32 8 ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b) -> IO b)
-> (Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p -> Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> DescriptorSetLayoutBindingFlagsCreateInfo -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p DescriptorSetLayoutBindingFlagsCreateInfo
x (Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b
f Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p)
pokeCStruct :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> DescriptorSetLayoutBindingFlagsCreateInfo -> IO b -> IO b
pokeCStruct p :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p DescriptorSetLayoutBindingFlagsCreateInfo{..} f :: 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
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
let pBindingFlagsLength :: Int
pBindingFlagsLength = Vector DescriptorBindingFlags -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector DescriptorBindingFlags -> Int)
-> Vector DescriptorBindingFlags -> Int
forall a b. (a -> b) -> a -> b
$ (Vector DescriptorBindingFlags
bindingFlags)
Word32
bindingCount'' <- IO Word32 -> ContT b IO Word32
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Word32 -> ContT b IO Word32) -> IO Word32 -> ContT b IO Word32
forall a b. (a -> b) -> a -> b
$ if (Word32
bindingCount) Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== 0
then Word32 -> IO Word32
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Word32 -> IO Word32) -> Word32 -> IO Word32
forall a b. (a -> b) -> a -> b
$ Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pBindingFlagsLength
else do
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pBindingFlagsLength Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== (Word32
bindingCount) Bool -> Bool -> Bool
|| Int
pBindingFlagsLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== 0) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
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 "" "pBindingFlags must be empty or have 'bindingCount' elements" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
Word32 -> IO Word32
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Word32
bindingCount)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
bindingCount'')
Ptr DescriptorBindingFlags
pBindingFlags'' <- if Vector DescriptorBindingFlags -> Bool
forall a. Vector a -> Bool
Data.Vector.null (Vector DescriptorBindingFlags
bindingFlags)
then Ptr DescriptorBindingFlags
-> ContT b IO (Ptr DescriptorBindingFlags)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr DescriptorBindingFlags
forall a. Ptr a
nullPtr
else do
Ptr DescriptorBindingFlags
pPBindingFlags <- ((Ptr DescriptorBindingFlags -> IO b) -> IO b)
-> ContT b IO (Ptr DescriptorBindingFlags)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr DescriptorBindingFlags -> IO b) -> IO b)
-> ContT b IO (Ptr DescriptorBindingFlags))
-> ((Ptr DescriptorBindingFlags -> IO b) -> IO b)
-> ContT b IO (Ptr DescriptorBindingFlags)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (Ptr DescriptorBindingFlags -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @DescriptorBindingFlags (((Vector DescriptorBindingFlags -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector DescriptorBindingFlags
bindingFlags))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 4) 4
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> DescriptorBindingFlags -> IO ())
-> Vector DescriptorBindingFlags -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: DescriptorBindingFlags
e -> Ptr DescriptorBindingFlags -> DescriptorBindingFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr DescriptorBindingFlags
pPBindingFlags Ptr DescriptorBindingFlags -> Int -> Ptr DescriptorBindingFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DescriptorBindingFlags) (DescriptorBindingFlags
e)) ((Vector DescriptorBindingFlags
bindingFlags))
Ptr DescriptorBindingFlags
-> ContT b IO (Ptr DescriptorBindingFlags)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr DescriptorBindingFlags
-> ContT b IO (Ptr DescriptorBindingFlags))
-> Ptr DescriptorBindingFlags
-> ContT b IO (Ptr DescriptorBindingFlags)
forall a b. (a -> b) -> a -> b
$ Ptr DescriptorBindingFlags
pPBindingFlags
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr DescriptorBindingFlags)
-> Ptr DescriptorBindingFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> Int -> Ptr (Ptr DescriptorBindingFlags)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr DescriptorBindingFlags))) Ptr DescriptorBindingFlags
pBindingFlags''
IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = 32
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> IO b -> IO b
pokeZeroCStruct p :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct DescriptorSetLayoutBindingFlagsCreateInfo where
peekCStruct :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> IO DescriptorSetLayoutBindingFlagsCreateInfo
peekCStruct p :: Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p = do
Word32
bindingCount <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
Ptr DescriptorBindingFlags
pBindingFlags <- Ptr (Ptr DescriptorBindingFlags) -> IO (Ptr DescriptorBindingFlags)
forall a. Storable a => Ptr a -> IO a
peek @(Ptr DescriptorBindingFlags) ((Ptr DescriptorSetLayoutBindingFlagsCreateInfo
p Ptr DescriptorSetLayoutBindingFlagsCreateInfo
-> Int -> Ptr (Ptr DescriptorBindingFlags)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr DescriptorBindingFlags)))
let pBindingFlagsLength :: Int
pBindingFlagsLength = if Ptr DescriptorBindingFlags
pBindingFlags Ptr DescriptorBindingFlags -> Ptr DescriptorBindingFlags -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr DescriptorBindingFlags
forall a. Ptr a
nullPtr then 0 else (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
bindingCount)
Vector DescriptorBindingFlags
pBindingFlags' <- Int
-> (Int -> IO DescriptorBindingFlags)
-> IO (Vector DescriptorBindingFlags)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM Int
pBindingFlagsLength (\i :: Int
i -> Ptr DescriptorBindingFlags -> IO DescriptorBindingFlags
forall a. Storable a => Ptr a -> IO a
peek @DescriptorBindingFlags ((Ptr DescriptorBindingFlags
pBindingFlags Ptr DescriptorBindingFlags -> Int -> Ptr DescriptorBindingFlags
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DescriptorBindingFlags)))
DescriptorSetLayoutBindingFlagsCreateInfo
-> IO DescriptorSetLayoutBindingFlagsCreateInfo
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DescriptorSetLayoutBindingFlagsCreateInfo
-> IO DescriptorSetLayoutBindingFlagsCreateInfo)
-> DescriptorSetLayoutBindingFlagsCreateInfo
-> IO DescriptorSetLayoutBindingFlagsCreateInfo
forall a b. (a -> b) -> a -> b
$ Word32
-> Vector DescriptorBindingFlags
-> DescriptorSetLayoutBindingFlagsCreateInfo
DescriptorSetLayoutBindingFlagsCreateInfo
Word32
bindingCount Vector DescriptorBindingFlags
pBindingFlags'
instance Zero DescriptorSetLayoutBindingFlagsCreateInfo where
zero :: DescriptorSetLayoutBindingFlagsCreateInfo
zero = Word32
-> Vector DescriptorBindingFlags
-> DescriptorSetLayoutBindingFlagsCreateInfo
DescriptorSetLayoutBindingFlagsCreateInfo
Word32
forall a. Zero a => a
zero
Vector DescriptorBindingFlags
forall a. Monoid a => a
mempty
data DescriptorSetVariableDescriptorCountAllocateInfo = DescriptorSetVariableDescriptorCountAllocateInfo
{
DescriptorSetVariableDescriptorCountAllocateInfo -> Vector Word32
descriptorCounts :: Vector Word32 }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DescriptorSetVariableDescriptorCountAllocateInfo)
#endif
deriving instance Show DescriptorSetVariableDescriptorCountAllocateInfo
instance ToCStruct DescriptorSetVariableDescriptorCountAllocateInfo where
withCStruct :: DescriptorSetVariableDescriptorCountAllocateInfo
-> (Ptr DescriptorSetVariableDescriptorCountAllocateInfo -> IO b)
-> IO b
withCStruct x :: DescriptorSetVariableDescriptorCountAllocateInfo
x f :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo -> IO b
f = Int
-> Int
-> (Ptr DescriptorSetVariableDescriptorCountAllocateInfo -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 32 8 ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo -> IO b)
-> IO b)
-> (Ptr DescriptorSetVariableDescriptorCountAllocateInfo -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p -> Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> DescriptorSetVariableDescriptorCountAllocateInfo -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p DescriptorSetVariableDescriptorCountAllocateInfo
x (Ptr DescriptorSetVariableDescriptorCountAllocateInfo -> IO b
f Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p)
pokeCStruct :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> DescriptorSetVariableDescriptorCountAllocateInfo -> IO b -> IO b
pokeCStruct p :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p DescriptorSetVariableDescriptorCountAllocateInfo{..} f :: 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
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector Word32 -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Word32 -> Int) -> Vector Word32 -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Word32
descriptorCounts)) :: Word32))
Ptr Word32
pPDescriptorCounts' <- ((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32))
-> ((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (Ptr Word32 -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @Word32 ((Vector Word32 -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Word32
descriptorCounts)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 4) 4
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Word32 -> IO ()) -> Vector Word32 -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: Word32
e -> Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Word32
pPDescriptorCounts' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Word32) (Word32
e)) (Vector Word32
descriptorCounts)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr Word32) -> Ptr Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr (Ptr Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr Word32))) (Ptr Word32
pPDescriptorCounts')
IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = 32
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> IO b -> IO b
pokeZeroCStruct p :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p f :: 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
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32
pPDescriptorCounts' <- ((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32))
-> ((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (Ptr Word32 -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @Word32 ((Vector Any -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Any
forall a. Monoid a => a
mempty)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 4) 4
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Word32 -> IO ()) -> Vector Word32 -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: Word32
e -> Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Word32
pPDescriptorCounts' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Word32) (Word32
e)) (Vector Word32
forall a. Monoid a => a
mempty)
IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr Word32) -> Ptr Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr (Ptr Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr Word32))) (Ptr Word32
pPDescriptorCounts')
IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance FromCStruct DescriptorSetVariableDescriptorCountAllocateInfo where
peekCStruct :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> IO DescriptorSetVariableDescriptorCountAllocateInfo
peekCStruct p :: Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p = do
Word32
descriptorSetCount <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
Ptr Word32
pDescriptorCounts <- Ptr (Ptr Word32) -> IO (Ptr Word32)
forall a. Storable a => Ptr a -> IO a
peek @(Ptr Word32) ((Ptr DescriptorSetVariableDescriptorCountAllocateInfo
p Ptr DescriptorSetVariableDescriptorCountAllocateInfo
-> Int -> Ptr (Ptr Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr Word32)))
Vector Word32
pDescriptorCounts' <- Int -> (Int -> IO Word32) -> IO (Vector Word32)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
descriptorSetCount) (\i :: Int
i -> Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr Word32
pDescriptorCounts Ptr Word32 -> Int -> Ptr Word32
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Word32)))
DescriptorSetVariableDescriptorCountAllocateInfo
-> IO DescriptorSetVariableDescriptorCountAllocateInfo
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DescriptorSetVariableDescriptorCountAllocateInfo
-> IO DescriptorSetVariableDescriptorCountAllocateInfo)
-> DescriptorSetVariableDescriptorCountAllocateInfo
-> IO DescriptorSetVariableDescriptorCountAllocateInfo
forall a b. (a -> b) -> a -> b
$ Vector Word32 -> DescriptorSetVariableDescriptorCountAllocateInfo
DescriptorSetVariableDescriptorCountAllocateInfo
Vector Word32
pDescriptorCounts'
instance Zero DescriptorSetVariableDescriptorCountAllocateInfo where
zero :: DescriptorSetVariableDescriptorCountAllocateInfo
zero = Vector Word32 -> DescriptorSetVariableDescriptorCountAllocateInfo
DescriptorSetVariableDescriptorCountAllocateInfo
Vector Word32
forall a. Monoid a => a
mempty
data DescriptorSetVariableDescriptorCountLayoutSupport = DescriptorSetVariableDescriptorCountLayoutSupport
{
DescriptorSetVariableDescriptorCountLayoutSupport -> Word32
maxVariableDescriptorCount :: Word32 }
deriving (Typeable, DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool
(DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool)
-> (DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool)
-> Eq DescriptorSetVariableDescriptorCountLayoutSupport
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool
$c/= :: DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool
== :: DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool
$c== :: DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DescriptorSetVariableDescriptorCountLayoutSupport)
#endif
deriving instance Show DescriptorSetVariableDescriptorCountLayoutSupport
instance ToCStruct DescriptorSetVariableDescriptorCountLayoutSupport where
withCStruct :: DescriptorSetVariableDescriptorCountLayoutSupport
-> (Ptr DescriptorSetVariableDescriptorCountLayoutSupport -> IO b)
-> IO b
withCStruct x :: DescriptorSetVariableDescriptorCountLayoutSupport
x f :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport -> IO b
f = Int
-> Int
-> (Ptr DescriptorSetVariableDescriptorCountLayoutSupport -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport -> IO b)
-> IO b)
-> (Ptr DescriptorSetVariableDescriptorCountLayoutSupport -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p -> Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p DescriptorSetVariableDescriptorCountLayoutSupport
x (Ptr DescriptorSetVariableDescriptorCountLayoutSupport -> IO b
f Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p)
pokeCStruct :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport
-> IO b
-> IO b
pokeCStruct p :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p DescriptorSetVariableDescriptorCountLayoutSupport{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
maxVariableDescriptorCount)
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> IO b -> IO b
pokeZeroCStruct p :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct DescriptorSetVariableDescriptorCountLayoutSupport where
peekCStruct :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> IO DescriptorSetVariableDescriptorCountLayoutSupport
peekCStruct p :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p = do
Word32
maxVariableDescriptorCount <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr DescriptorSetVariableDescriptorCountLayoutSupport
p Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
DescriptorSetVariableDescriptorCountLayoutSupport
-> IO DescriptorSetVariableDescriptorCountLayoutSupport
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DescriptorSetVariableDescriptorCountLayoutSupport
-> IO DescriptorSetVariableDescriptorCountLayoutSupport)
-> DescriptorSetVariableDescriptorCountLayoutSupport
-> IO DescriptorSetVariableDescriptorCountLayoutSupport
forall a b. (a -> b) -> a -> b
$ Word32 -> DescriptorSetVariableDescriptorCountLayoutSupport
DescriptorSetVariableDescriptorCountLayoutSupport
Word32
maxVariableDescriptorCount
instance Storable DescriptorSetVariableDescriptorCountLayoutSupport where
sizeOf :: DescriptorSetVariableDescriptorCountLayoutSupport -> Int
sizeOf ~DescriptorSetVariableDescriptorCountLayoutSupport
_ = 24
alignment :: DescriptorSetVariableDescriptorCountLayoutSupport -> Int
alignment ~DescriptorSetVariableDescriptorCountLayoutSupport
_ = 8
peek :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> IO DescriptorSetVariableDescriptorCountLayoutSupport
peek = Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> IO DescriptorSetVariableDescriptorCountLayoutSupport
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport -> IO ()
poke ptr :: Ptr DescriptorSetVariableDescriptorCountLayoutSupport
ptr poked :: DescriptorSetVariableDescriptorCountLayoutSupport
poked = Ptr DescriptorSetVariableDescriptorCountLayoutSupport
-> DescriptorSetVariableDescriptorCountLayoutSupport
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DescriptorSetVariableDescriptorCountLayoutSupport
ptr DescriptorSetVariableDescriptorCountLayoutSupport
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero DescriptorSetVariableDescriptorCountLayoutSupport where
zero :: DescriptorSetVariableDescriptorCountLayoutSupport
zero = Word32 -> DescriptorSetVariableDescriptorCountLayoutSupport
DescriptorSetVariableDescriptorCountLayoutSupport
Word32
forall a. Zero a => a
zero