{-# language CPP #-}
module Vulkan.Extensions.VK_NV_ray_tracing_validation ( PhysicalDeviceRayTracingValidationFeaturesNV(..)
, NV_RAY_TRACING_VALIDATION_SPEC_VERSION
, pattern NV_RAY_TRACING_VALIDATION_SPEC_VERSION
, NV_RAY_TRACING_VALIDATION_EXTENSION_NAME
, pattern NV_RAY_TRACING_VALIDATION_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_RAY_TRACING_VALIDATION_FEATURES_NV))
data PhysicalDeviceRayTracingValidationFeaturesNV = PhysicalDeviceRayTracingValidationFeaturesNV
{
PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
rayTracingValidation :: Bool }
deriving (Typeable, PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
(PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool)
-> (PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool)
-> Eq PhysicalDeviceRayTracingValidationFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
== :: PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
$c/= :: PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
/= :: PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceRayTracingValidationFeaturesNV)
#endif
deriving instance Show PhysicalDeviceRayTracingValidationFeaturesNV
instance ToCStruct PhysicalDeviceRayTracingValidationFeaturesNV where
withCStruct :: forall b.
PhysicalDeviceRayTracingValidationFeaturesNV
-> (Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b)
-> IO b
withCStruct PhysicalDeviceRayTracingValidationFeaturesNV
x Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p -> Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> IO b -> IO b
forall b.
Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p PhysicalDeviceRayTracingValidationFeaturesNV
x (Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b
f Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p PhysicalDeviceRayTracingValidationFeaturesNV{Bool
rayTracingValidation :: PhysicalDeviceRayTracingValidationFeaturesNV -> Bool
rayTracingValidation :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> 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 PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
rayTracingValidation))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceRayTracingValidationFeaturesNV -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> 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 PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> 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 PhysicalDeviceRayTracingValidationFeaturesNV where
peekCStruct :: Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> IO PhysicalDeviceRayTracingValidationFeaturesNV
peekCStruct Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p = do
rayTracingValidation <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceRayTracingValidationFeaturesNV
p Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceRayTracingValidationFeaturesNV
(bool32ToBool rayTracingValidation)
instance Storable PhysicalDeviceRayTracingValidationFeaturesNV where
sizeOf :: PhysicalDeviceRayTracingValidationFeaturesNV -> Int
sizeOf ~PhysicalDeviceRayTracingValidationFeaturesNV
_ = Int
24
alignment :: PhysicalDeviceRayTracingValidationFeaturesNV -> Int
alignment ~PhysicalDeviceRayTracingValidationFeaturesNV
_ = Int
8
peek :: Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> IO PhysicalDeviceRayTracingValidationFeaturesNV
peek = Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> IO PhysicalDeviceRayTracingValidationFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> IO ()
poke Ptr PhysicalDeviceRayTracingValidationFeaturesNV
ptr PhysicalDeviceRayTracingValidationFeaturesNV
poked = Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceRayTracingValidationFeaturesNV
-> PhysicalDeviceRayTracingValidationFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingValidationFeaturesNV
ptr PhysicalDeviceRayTracingValidationFeaturesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceRayTracingValidationFeaturesNV where
zero :: PhysicalDeviceRayTracingValidationFeaturesNV
zero = Bool -> PhysicalDeviceRayTracingValidationFeaturesNV
PhysicalDeviceRayTracingValidationFeaturesNV
Bool
forall a. Zero a => a
zero
type NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1
pattern NV_RAY_TRACING_VALIDATION_SPEC_VERSION :: forall a . Integral a => a
pattern $mNV_RAY_TRACING_VALIDATION_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_RAY_TRACING_VALIDATION_SPEC_VERSION :: forall a. Integral a => a
NV_RAY_TRACING_VALIDATION_SPEC_VERSION = 1
type NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation"
pattern NV_RAY_TRACING_VALIDATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mNV_RAY_TRACING_VALIDATION_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_RAY_TRACING_VALIDATION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
NV_RAY_TRACING_VALIDATION_EXTENSION_NAME = "VK_NV_ray_tracing_validation"