{-# language CPP #-}
module Vulkan.Extensions.VK_NV_raw_access_chains ( PhysicalDeviceRawAccessChainsFeaturesNV(..)
, NV_RAW_ACCESS_CHAINS_SPEC_VERSION
, pattern NV_RAW_ACCESS_CHAINS_SPEC_VERSION
, NV_RAW_ACCESS_CHAINS_EXTENSION_NAME
, pattern NV_RAW_ACCESS_CHAINS_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_RAW_ACCESS_CHAINS_FEATURES_NV))
data PhysicalDeviceRawAccessChainsFeaturesNV = PhysicalDeviceRawAccessChainsFeaturesNV
{
PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
shaderRawAccessChains :: Bool }
deriving (Typeable, PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
(PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool)
-> (PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool)
-> Eq PhysicalDeviceRawAccessChainsFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
== :: PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
$c/= :: PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
/= :: PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceRawAccessChainsFeaturesNV)
#endif
deriving instance Show PhysicalDeviceRawAccessChainsFeaturesNV
instance ToCStruct PhysicalDeviceRawAccessChainsFeaturesNV where
withCStruct :: forall b.
PhysicalDeviceRawAccessChainsFeaturesNV
-> (Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b) -> IO b
withCStruct PhysicalDeviceRawAccessChainsFeaturesNV
x Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b) -> IO b)
-> (Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p -> Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> IO b -> IO b
forall b.
Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p PhysicalDeviceRawAccessChainsFeaturesNV
x (Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b
f Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p PhysicalDeviceRawAccessChainsFeaturesNV{Bool
shaderRawAccessChains :: PhysicalDeviceRawAccessChainsFeaturesNV -> Bool
shaderRawAccessChains :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> 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 PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRawAccessChains))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> 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 PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> 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 PhysicalDeviceRawAccessChainsFeaturesNV where
peekCStruct :: Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> IO PhysicalDeviceRawAccessChainsFeaturesNV
peekCStruct Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p = do
shaderRawAccessChains <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceRawAccessChainsFeaturesNV
p Ptr PhysicalDeviceRawAccessChainsFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceRawAccessChainsFeaturesNV
(bool32ToBool shaderRawAccessChains)
instance Storable PhysicalDeviceRawAccessChainsFeaturesNV where
sizeOf :: PhysicalDeviceRawAccessChainsFeaturesNV -> Int
sizeOf ~PhysicalDeviceRawAccessChainsFeaturesNV
_ = Int
24
alignment :: PhysicalDeviceRawAccessChainsFeaturesNV -> Int
alignment ~PhysicalDeviceRawAccessChainsFeaturesNV
_ = Int
8
peek :: Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> IO PhysicalDeviceRawAccessChainsFeaturesNV
peek = Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> IO PhysicalDeviceRawAccessChainsFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> IO ()
poke Ptr PhysicalDeviceRawAccessChainsFeaturesNV
ptr PhysicalDeviceRawAccessChainsFeaturesNV
poked = Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceRawAccessChainsFeaturesNV
-> PhysicalDeviceRawAccessChainsFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRawAccessChainsFeaturesNV
ptr PhysicalDeviceRawAccessChainsFeaturesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceRawAccessChainsFeaturesNV where
zero :: PhysicalDeviceRawAccessChainsFeaturesNV
zero = Bool -> PhysicalDeviceRawAccessChainsFeaturesNV
PhysicalDeviceRawAccessChainsFeaturesNV
Bool
forall a. Zero a => a
zero
type NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1
pattern NV_RAW_ACCESS_CHAINS_SPEC_VERSION :: forall a . Integral a => a
pattern $mNV_RAW_ACCESS_CHAINS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_RAW_ACCESS_CHAINS_SPEC_VERSION :: forall a. Integral a => a
NV_RAW_ACCESS_CHAINS_SPEC_VERSION = 1
type NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains"
pattern NV_RAW_ACCESS_CHAINS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mNV_RAW_ACCESS_CHAINS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_RAW_ACCESS_CHAINS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
NV_RAW_ACCESS_CHAINS_EXTENSION_NAME = "VK_NV_raw_access_chains"