{-# language CPP #-}
module Vulkan.Extensions.VK_NV_shader_atomic_float16_vector ( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV(..)
, NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION
, pattern NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION
, NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME
, pattern NV_SHADER_ATOMIC_FLOAT16_VECTOR_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_ATOMIC_FLOAT16_VECTOR_FEATURES_NV))
data PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
{
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
shaderFloat16VectorAtomics :: Bool }
deriving (Typeable, PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
(PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool)
-> (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool)
-> Eq PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
== :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
$c/= :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
/= :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV)
#endif
deriving instance Show PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
instance ToCStruct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV where
withCStruct :: forall b.
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> (Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO b)
-> IO b
withCStruct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
x Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p -> Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
x (Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO b
f Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV{Bool
shaderFloat16VectorAtomics :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Bool
shaderFloat16VectorAtomics :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> 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 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFloat16VectorAtomics))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> 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 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> 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))
IO b
f
instance FromCStruct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV where
peekCStruct :: Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
peekCStruct Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p = do
shaderFloat16VectorAtomics <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
p Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
(bool32ToBool shaderFloat16VectorAtomics)
instance Storable PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV where
sizeOf :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Int
sizeOf ~PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
_ = Int
24
alignment :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> Int
alignment ~PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
_ = Int
8
peek :: Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
peek = Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV -> IO ()
poke Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
poked = Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
ptr PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV where
zero :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
zero = Bool -> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
Bool
forall a. Zero a => a
zero
type NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1
pattern NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION :: forall a . Integral a => a
pattern $mNV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION :: forall a. Integral a => a
NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION = 1
type NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector"
pattern NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mNV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME = "VK_NV_shader_atomic_float16_vector"