{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_shader_fma ( PhysicalDeviceShaderFmaFeaturesKHR(..)
, KHR_SHADER_FMA_SPEC_VERSION
, pattern KHR_SHADER_FMA_SPEC_VERSION
, KHR_SHADER_FMA_EXTENSION_NAME
, pattern KHR_SHADER_FMA_EXTENSION_NAME
) 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_FMA_FEATURES_KHR))
data PhysicalDeviceShaderFmaFeaturesKHR = PhysicalDeviceShaderFmaFeaturesKHR
{
PhysicalDeviceShaderFmaFeaturesKHR -> Bool
shaderFmaFloat16 :: Bool
,
PhysicalDeviceShaderFmaFeaturesKHR -> Bool
shaderFmaFloat32 :: Bool
,
PhysicalDeviceShaderFmaFeaturesKHR -> Bool
shaderFmaFloat64 :: Bool
}
deriving (Typeable, PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool
(PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool)
-> (PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool)
-> Eq PhysicalDeviceShaderFmaFeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool
== :: PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool
$c/= :: PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool
/= :: PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderFmaFeaturesKHR)
#endif
deriving instance Show PhysicalDeviceShaderFmaFeaturesKHR
instance ToCStruct PhysicalDeviceShaderFmaFeaturesKHR where
withCStruct :: forall b.
PhysicalDeviceShaderFmaFeaturesKHR
-> (Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceShaderFmaFeaturesKHR
x Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b
f = Int -> (Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderFmaFeaturesKHR
p -> Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderFmaFeaturesKHR
p PhysicalDeviceShaderFmaFeaturesKHR
x (Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b
f Ptr PhysicalDeviceShaderFmaFeaturesKHR
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderFmaFeaturesKHR
p PhysicalDeviceShaderFmaFeaturesKHR{Bool
shaderFmaFloat16 :: PhysicalDeviceShaderFmaFeaturesKHR -> Bool
shaderFmaFloat32 :: PhysicalDeviceShaderFmaFeaturesKHR -> Bool
shaderFmaFloat64 :: PhysicalDeviceShaderFmaFeaturesKHR -> Bool
shaderFmaFloat16 :: Bool
shaderFmaFloat32 :: Bool
shaderFmaFloat64 :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> 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 PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFmaFloat16))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFmaFloat32))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFmaFloat64))
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceShaderFmaFeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderFmaFeaturesKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> 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 PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> 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 PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> 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 PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> 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 PhysicalDeviceShaderFmaFeaturesKHR where
peekCStruct :: Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> IO PhysicalDeviceShaderFmaFeaturesKHR
peekCStruct Ptr PhysicalDeviceShaderFmaFeaturesKHR
p = do
shaderFmaFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderFmaFeaturesKHR
p Ptr PhysicalDeviceShaderFmaFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
shaderFmaFloat32 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
shaderFmaFloat64 <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
pure $ PhysicalDeviceShaderFmaFeaturesKHR
(bool32ToBool shaderFmaFloat16)
(bool32ToBool shaderFmaFloat32)
(bool32ToBool shaderFmaFloat64)
instance Storable PhysicalDeviceShaderFmaFeaturesKHR where
sizeOf :: PhysicalDeviceShaderFmaFeaturesKHR -> Int
sizeOf ~PhysicalDeviceShaderFmaFeaturesKHR
_ = Int
32
alignment :: PhysicalDeviceShaderFmaFeaturesKHR -> Int
alignment ~PhysicalDeviceShaderFmaFeaturesKHR
_ = Int
8
peek :: Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> IO PhysicalDeviceShaderFmaFeaturesKHR
peek = Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> IO PhysicalDeviceShaderFmaFeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> IO ()
poke Ptr PhysicalDeviceShaderFmaFeaturesKHR
ptr PhysicalDeviceShaderFmaFeaturesKHR
poked = Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShaderFmaFeaturesKHR
-> PhysicalDeviceShaderFmaFeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderFmaFeaturesKHR
ptr PhysicalDeviceShaderFmaFeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderFmaFeaturesKHR where
zero :: PhysicalDeviceShaderFmaFeaturesKHR
zero = Bool -> Bool -> Bool -> PhysicalDeviceShaderFmaFeaturesKHR
PhysicalDeviceShaderFmaFeaturesKHR
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
type KHR_SHADER_FMA_SPEC_VERSION = 1
pattern KHR_SHADER_FMA_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_SHADER_FMA_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SHADER_FMA_SPEC_VERSION :: forall a. Integral a => a
KHR_SHADER_FMA_SPEC_VERSION = 1
type KHR_SHADER_FMA_EXTENSION_NAME = "VK_KHR_shader_fma"
pattern KHR_SHADER_FMA_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_SHADER_FMA_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SHADER_FMA_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_SHADER_FMA_EXTENSION_NAME = "VK_KHR_shader_fma"