{-# 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
(PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool)
-> (PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> Bool)
-> Eq PhysicalDeviceSubgroupSizeControlFeatures
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 :: PhysicalDeviceSubgroupSizeControlFeatures
-> (Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b) -> IO b
withCStruct PhysicalDeviceSubgroupSizeControlFeatures
x Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b
f = Int
-> (Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b) -> IO b)
-> (Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceSubgroupSizeControlFeatures
p -> Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> IO b -> IO b
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 :: 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
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subgroupSizeControl))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures -> Int -> Ptr Bool32
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 :: Ptr PhysicalDeviceSubgroupSizeControlFeatures -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceSubgroupSizeControlFeatures where
peekCStruct :: Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures
peekCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
p = do
Bool32
subgroupSizeControl <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
Bool32
computeFullSubgroups <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceSubgroupSizeControlFeatures
p Ptr PhysicalDeviceSubgroupSizeControlFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures)
-> PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures
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 = Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> IO PhysicalDeviceSubgroupSizeControlFeatures
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> IO ()
poke Ptr PhysicalDeviceSubgroupSizeControlFeatures
ptr PhysicalDeviceSubgroupSizeControlFeatures
poked = Ptr PhysicalDeviceSubgroupSizeControlFeatures
-> PhysicalDeviceSubgroupSizeControlFeatures -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlFeatures
ptr PhysicalDeviceSubgroupSizeControlFeatures
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceSubgroupSizeControlFeatures where
zero :: PhysicalDeviceSubgroupSizeControlFeatures
zero = Bool -> Bool -> PhysicalDeviceSubgroupSizeControlFeatures
PhysicalDeviceSubgroupSizeControlFeatures
Bool
forall a. Zero a => a
zero
Bool
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
(PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool)
-> (PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> Bool)
-> Eq PhysicalDeviceSubgroupSizeControlProperties
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 :: PhysicalDeviceSubgroupSizeControlProperties
-> (Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b)
-> IO b
withCStruct PhysicalDeviceSubgroupSizeControlProperties
x Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b
f = Int
-> (Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceSubgroupSizeControlProperties
p -> Ptr PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> IO b -> IO b
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 :: 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
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
minSubgroupSize)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
maxSubgroupSize)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
maxComputeWorkgroupSubgroups)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr ShaderStageFlags
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 :: Ptr PhysicalDeviceSubgroupSizeControlProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags)) (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 <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Word32
maxSubgroupSize <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
Word32
maxComputeWorkgroupSubgroups <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
ShaderStageFlags
requiredSubgroupSizeStages <- Ptr ShaderStageFlags -> IO ShaderStageFlags
forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceSubgroupSizeControlProperties
p Ptr PhysicalDeviceSubgroupSizeControlProperties
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags))
PhysicalDeviceSubgroupSizeControlProperties
-> IO PhysicalDeviceSubgroupSizeControlProperties
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceSubgroupSizeControlProperties
-> IO PhysicalDeviceSubgroupSizeControlProperties)
-> PhysicalDeviceSubgroupSizeControlProperties
-> IO PhysicalDeviceSubgroupSizeControlProperties
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 = Ptr PhysicalDeviceSubgroupSizeControlProperties
-> IO PhysicalDeviceSubgroupSizeControlProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> IO ()
poke Ptr PhysicalDeviceSubgroupSizeControlProperties
ptr PhysicalDeviceSubgroupSizeControlProperties
poked = Ptr PhysicalDeviceSubgroupSizeControlProperties
-> PhysicalDeviceSubgroupSizeControlProperties -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSubgroupSizeControlProperties
ptr PhysicalDeviceSubgroupSizeControlProperties
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceSubgroupSizeControlProperties where
zero :: PhysicalDeviceSubgroupSizeControlProperties
zero = Word32
-> Word32
-> Word32
-> ShaderStageFlags
-> PhysicalDeviceSubgroupSizeControlProperties
PhysicalDeviceSubgroupSizeControlProperties
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
ShaderStageFlags
forall a. Zero a => a
zero
data PipelineShaderStageRequiredSubgroupSizeCreateInfo = PipelineShaderStageRequiredSubgroupSizeCreateInfo
{
PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Word32
requiredSubgroupSize :: Word32 }
deriving (Typeable, PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool
(PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool)
-> (PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Bool)
-> Eq PipelineShaderStageRequiredSubgroupSizeCreateInfo
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 :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> (Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b)
-> IO b
withCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo
x Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b
f = Int
-> (Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b)
-> IO b)
-> (Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p -> Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO b
-> IO b
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 :: Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO b
-> IO b
pokeCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p PipelineShaderStageRequiredSubgroupSizeCreateInfo{Word32
requiredSubgroupSize :: Word32
$sel:requiredSubgroupSize:PipelineShaderStageRequiredSubgroupSizeCreateInfo :: PipelineShaderStageRequiredSubgroupSizeCreateInfo -> Word32
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr Word32
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 :: Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO b -> IO b
pokeZeroCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (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 <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
p Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO PipelineShaderStageRequiredSubgroupSizeCreateInfo
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO PipelineShaderStageRequiredSubgroupSizeCreateInfo)
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO PipelineShaderStageRequiredSubgroupSizeCreateInfo
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 = Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO PipelineShaderStageRequiredSubgroupSizeCreateInfo
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo -> IO ()
poke Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
poked = Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> PipelineShaderStageRequiredSubgroupSizeCreateInfo
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
ptr PipelineShaderStageRequiredSubgroupSizeCreateInfo
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PipelineShaderStageRequiredSubgroupSizeCreateInfo where
zero :: PipelineShaderStageRequiredSubgroupSizeCreateInfo
zero = Word32 -> PipelineShaderStageRequiredSubgroupSizeCreateInfo
PipelineShaderStageRequiredSubgroupSizeCreateInfo
Word32
forall a. Zero a => a
zero