{-# language CPP #-}
module Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control ( PhysicalDeviceSubgroupSizeControlFeatures(..)
, PhysicalDeviceSubgroupSizeControlProperties(..)
, PipelineShaderStageRequiredSubgroupSizeCreateInfo(..)
, StructureType(..)
, PipelineShaderStageCreateFlagBits(..)
, PipelineShaderStageCreateFlags
) where
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
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 Foreign.Ptr (Ptr)
import Data.Word (Word32)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO))
import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))
import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
import Vulkan.Core10.Enums.StructureType (StructureType(..))
data PhysicalDeviceSubgroupSizeControlFeatures = PhysicalDeviceSubgroupSizeControlFeatures
{
PhysicalDeviceSubgroupSizeControlFeatures -> Bool
subgroupSizeControl :: Bool
,
PhysicalDeviceSubgroupSizeControlFeatures -> Bool
computeFullSubgroups :: Bool
}
deriving (Typeable, PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool
$c/= :: PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool
== :: PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool
$c== :: PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceSubgroupSizeControlFeatures)
#endif
deriving instance Show PhysicalDeviceSubgroupSizeControlFeatures
instance ToCStruct PhysicalDeviceSubgroupSizeControlFeatures where
withCStruct :: forall b.
PhysicalDeviceSubgroupSizeControlFeatures
-> (Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b) -> IO b
withCStruct PhysicalDeviceSubgroupSizeControlFeatures
x Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceSubgroupSizeControlFeatures
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
p PhysicalDeviceSubgroupSizeControlFeatures
x (Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b
f Ptr PhysicalDeviceSubgroupSizeControlFeatures
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
p PhysicalDeviceSubgroupSizeControlFeatures{Bool
computeFullSubgroups :: Bool
subgroupSizeControl :: Bool
$sel:computeFullSubgroups:PhysicalDeviceSubgroupSizeControlFeatures :: PhysicalDeviceSubgroupSizeControlFeatures -> Bool
$sel:subgroupSizeControl:PhysicalDeviceSubgroupSizeControlFeatures :: PhysicalDeviceSubgroupSizeControlFeatures -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subgroupSizeControl))
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
computeFullSubgroups))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceSubgroupSizeControlFeatures where
peekCStruct :: Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures
peekCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
p = do
Bool32
subgroupSizeControl <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
Bool32
computeFullSubgroups <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> PhysicalDeviceSubgroupSizeControlFeatures
PhysicalDeviceSubgroupSizeControlFeatures
(Bool32 -> Bool
bool32ToBool Bool32
subgroupSizeControl)
(Bool32 -> Bool
bool32ToBool Bool32
computeFullSubgroups)
instance Storable PhysicalDeviceSubgroupSizeControlFeatures where
sizeOf :: PhysicalDeviceSubgroupSizeControlFeatures -> Int
sizeOf ~PhysicalDeviceSubgroupSizeControlFeatures
_ = Int
24
alignment :: PhysicalDeviceSubgroupSizeControlFeatures -> Int
alignment ~PhysicalDeviceSubgroupSizeControlFeatures
_ = Int
8
peek :: Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> IO ()
poke Ptr PhysicalDeviceSubgroupSizeControlFeatures
ptr PhysicalDeviceSubgroupSizeControlFeatures
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
ptr PhysicalDeviceSubgroupSizeControlFeatures
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceSubgroupSizeControlFeatures where
zero :: PhysicalDeviceSubgroupSizeControlFeatures
zero = Bool -> Bool -> PhysicalDeviceSubgroupSizeControlFeatures
PhysicalDeviceSubgroupSizeControlFeatures
forall a. Zero a => a
zero
forall a. Zero a => a
zero
data PhysicalDeviceSubgroupSizeControlProperties = PhysicalDeviceSubgroupSizeControlProperties
{
PhysicalDeviceSubgroupSizeControlProperties -> Word32
minSubgroupSize :: Word32
,
PhysicalDeviceSubgroupSizeControlProperties -> Word32
maxSubgroupSize :: Word32
,
PhysicalDeviceSubgroupSizeControlProperties -> Word32
maxComputeWorkgroupSubgroups :: Word32
,
PhysicalDeviceSubgroupSizeControlProperties -> ShaderStageFlags
requiredSubgroupSizeStages :: ShaderStageFlags
}
deriving (Typeable, PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool
$c/= :: PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool
== :: PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool
$c== :: PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceSubgroupSizeControlProperties)
#endif
deriving instance Show PhysicalDeviceSubgroupSizeControlProperties
instance ToCStruct PhysicalDeviceSubgroupSizeControlProperties where
withCStruct :: forall b.
PhysicalDeviceSubgroupSizeControlProperties
-> (Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b)
-> IO b
withCStruct PhysicalDeviceSubgroupSizeControlProperties
x Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceSubgroupSizeControlProperties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
p PhysicalDeviceSubgroupSizeControlProperties
x (Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b
f Ptr PhysicalDeviceSubgroupSizeControlProperties
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
p PhysicalDeviceSubgroupSizeControlProperties{Word32
ShaderStageFlags
requiredSubgroupSizeStages :: ShaderStageFlags
maxComputeWorkgroupSubgroups :: Word32
maxSubgroupSize :: Word32
minSubgroupSize :: Word32
$sel:requiredSubgroupSizeStages:PhysicalDeviceSubgroupSizeControlProperties :: PhysicalDeviceSubgroupSizeControlProperties -> ShaderStageFlags
$sel:maxComputeWorkgroupSubgroups:PhysicalDeviceSubgroupSizeControlProperties :: PhysicalDeviceSubgroupSizeControlProperties -> Word32
$sel:maxSubgroupSize:PhysicalDeviceSubgroupSizeControlProperties :: PhysicalDeviceSubgroupSizeControlProperties -> Word32
$sel:minSubgroupSize:PhysicalDeviceSubgroupSizeControlProperties :: PhysicalDeviceSubgroupSizeControlProperties -> Word32
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
minSubgroupSize)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
maxSubgroupSize)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
maxComputeWorkgroupSubgroups)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags)) (ShaderStageFlags
requiredSubgroupSizeStages)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceSubgroupSizeControlProperties where
peekCStruct :: Ptr PhysicalDeviceSubgroupSizeControlProperties
-> IO PhysicalDeviceSubgroupSizeControlProperties
peekCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
p = do
Word32
minSubgroupSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Word32
maxSubgroupSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
Word32
maxComputeWorkgroupSubgroups <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
ShaderStageFlags
requiredSubgroupSizeStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Word32
-> Word32
-> Word32
-> ShaderStageFlags
-> PhysicalDeviceSubgroupSizeControlProperties
PhysicalDeviceSubgroupSizeControlProperties
Word32
minSubgroupSize
Word32
maxSubgroupSize
Word32
maxComputeWorkgroupSubgroups
ShaderStageFlags
requiredSubgroupSizeStages
instance Storable PhysicalDeviceSubgroupSizeControlProperties where
sizeOf :: PhysicalDeviceSubgroupSizeControlProperties -> Int
sizeOf ~PhysicalDeviceSubgroupSizeControlProperties
_ = Int
32
alignment :: PhysicalDeviceSubgroupSizeControlProperties -> Int
alignment ~PhysicalDeviceSubgroupSizeControlProperties
_ = Int
8
peek :: Ptr PhysicalDeviceSubgroupSizeControlProperties
-> IO PhysicalDeviceSubgroupSizeControlProperties
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> IO ()
poke Ptr PhysicalDeviceSubgroupSizeControlProperties
ptr PhysicalDeviceSubgroupSizeControlProperties
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
ptr PhysicalDeviceSubgroupSizeControlProperties
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceSubgroupSizeControlProperties where
zero :: PhysicalDeviceSubgroupSizeControlProperties
zero = Word32
-> Word32
-> Word32
-> ShaderStageFlags
-> PhysicalDeviceSubgroupSizeControlProperties
PhysicalDeviceSubgroupSizeControlProperties
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
data PipelineShaderStageRequiredSubgroupSizeCreateInfo = PipelineShaderStageRequiredSubgroupSizeCreateInfo
{
PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Word32
requiredSubgroupSize :: Word32 }
deriving (Typeable, PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool
$c/= :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool
== :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool
$c== :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
#endif
deriving instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfo
instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo where
withCStruct :: forall b.
PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> (Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b)
-> IO b
withCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo
x Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p PipelineShaderStageRequiredSubgroupSizeCreateInfo
x (Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b
f Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p)
pokeCStruct :: forall b.
Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO b
-> IO b
pokeCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p PipelineShaderStageRequiredSubgroupSizeCreateInfo{Word32
requiredSubgroupSize :: Word32
$sel:requiredSubgroupSize:PipelineShaderStageRequiredSubgroupSizeCreateInfo :: PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Word32
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
requiredSubgroupSize)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO b -> IO b
pokeZeroCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo where
peekCStruct :: Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO PipelineShaderStageRequiredSubgroupSizeCreateInfo
peekCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p = do
Word32
requiredSubgroupSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Word32 -> PipelineShaderStageRequiredSubgroupSizeCreateInfo
PipelineShaderStageRequiredSubgroupSizeCreateInfo
Word32
requiredSubgroupSize
instance Storable PipelineShaderStageRequiredSubgroupSizeCreateInfo where
sizeOf :: PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Int
sizeOf ~PipelineShaderStageRequiredSubgroupSizeCreateInfo
_ = Int
24
alignment :: PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Int
alignment ~PipelineShaderStageRequiredSubgroupSizeCreateInfo
_ = Int
8
peek :: Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO PipelineShaderStageRequiredSubgroupSizeCreateInfo
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO ()
poke Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PipelineShaderStageRequiredSubgroupSizeCreateInfo where
zero :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
zero = Word32 -> PipelineShaderStageRequiredSubgroupSizeCreateInfo
PipelineShaderStageRequiredSubgroupSizeCreateInfo
forall a. Zero a => a
zero