{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_shader_bfloat16 ( PhysicalDeviceShaderBfloat16FeaturesKHR(..)
, KHR_SHADER_BFLOAT16_SPEC_VERSION
, pattern KHR_SHADER_BFLOAT16_SPEC_VERSION
, KHR_SHADER_BFLOAT16_EXTENSION_NAME
, pattern KHR_SHADER_BFLOAT16_EXTENSION_NAME
, ComponentTypeKHR(..)
) 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.String (IsString)
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.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR))
import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(..))
data PhysicalDeviceShaderBfloat16FeaturesKHR = PhysicalDeviceShaderBfloat16FeaturesKHR
{
PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
shaderBFloat16Type :: Bool
,
PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
shaderBFloat16DotProduct :: Bool
,
PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
shaderBFloat16CooperativeMatrix :: Bool
}
deriving (Typeable, PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
(PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool)
-> (PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool)
-> Eq PhysicalDeviceShaderBfloat16FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
== :: PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
$c/= :: PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
/= :: PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderBfloat16FeaturesKHR)
#endif
deriving instance Show PhysicalDeviceShaderBfloat16FeaturesKHR
instance ToCStruct PhysicalDeviceShaderBfloat16FeaturesKHR where
withCStruct :: forall b.
PhysicalDeviceShaderBfloat16FeaturesKHR
-> (Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceShaderBfloat16FeaturesKHR
x Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b
f = Int
-> (Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p -> Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p PhysicalDeviceShaderBfloat16FeaturesKHR
x (Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b
f Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p PhysicalDeviceShaderBfloat16FeaturesKHR{Bool
shaderBFloat16Type :: PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
shaderBFloat16DotProduct :: PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
shaderBFloat16CooperativeMatrix :: PhysicalDeviceShaderBfloat16FeaturesKHR -> Bool
shaderBFloat16Type :: Bool
shaderBFloat16DotProduct :: Bool
shaderBFloat16CooperativeMatrix :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> 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 PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderBFloat16Type))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderBFloat16DotProduct))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderBFloat16CooperativeMatrix))
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> 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 PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> 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 PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceShaderBfloat16FeaturesKHR where
peekCStruct :: Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> IO PhysicalDeviceShaderBfloat16FeaturesKHR
peekCStruct Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p = do
shaderBFloat16Type <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
p Ptr PhysicalDeviceShaderBfloat16FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
shaderBFloat16DotProduct <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
shaderBFloat16CooperativeMatrix <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
pure $ PhysicalDeviceShaderBfloat16FeaturesKHR
(bool32ToBool shaderBFloat16Type)
(bool32ToBool shaderBFloat16DotProduct)
(bool32ToBool shaderBFloat16CooperativeMatrix)
instance Storable PhysicalDeviceShaderBfloat16FeaturesKHR where
sizeOf :: PhysicalDeviceShaderBfloat16FeaturesKHR -> Int
sizeOf ~PhysicalDeviceShaderBfloat16FeaturesKHR
_ = Int
32
alignment :: PhysicalDeviceShaderBfloat16FeaturesKHR -> Int
alignment ~PhysicalDeviceShaderBfloat16FeaturesKHR
_ = Int
8
peek :: Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> IO PhysicalDeviceShaderBfloat16FeaturesKHR
peek = Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> IO PhysicalDeviceShaderBfloat16FeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> IO ()
poke Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
ptr PhysicalDeviceShaderBfloat16FeaturesKHR
poked = Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
-> PhysicalDeviceShaderBfloat16FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderBfloat16FeaturesKHR
ptr PhysicalDeviceShaderBfloat16FeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderBfloat16FeaturesKHR where
zero :: PhysicalDeviceShaderBfloat16FeaturesKHR
zero = Bool -> Bool -> Bool -> PhysicalDeviceShaderBfloat16FeaturesKHR
PhysicalDeviceShaderBfloat16FeaturesKHR
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
type KHR_SHADER_BFLOAT16_SPEC_VERSION = 1
pattern KHR_SHADER_BFLOAT16_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_SHADER_BFLOAT16_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SHADER_BFLOAT16_SPEC_VERSION :: forall a. Integral a => a
KHR_SHADER_BFLOAT16_SPEC_VERSION = 1
type KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16"
pattern KHR_SHADER_BFLOAT16_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_SHADER_BFLOAT16_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SHADER_BFLOAT16_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16"