{-# language CPP #-}
module Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests ( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD(..)
, AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION
, pattern AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION
, AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME
, pattern AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_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_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD))
data PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
{
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
shaderEarlyAndLateFragmentTests :: Bool }
deriving (Typeable, PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
(PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> Bool)
-> (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> Bool)
-> Eq PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
$c/= :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
== :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
$c== :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)
#endif
deriving instance Show PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
instance ToCStruct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD where
withCStruct :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> (Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b)
-> IO b
withCStruct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
x Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b
f = Int
-> (Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b)
-> IO b)
-> (Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p -> Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
x (Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b
f Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p)
pokeCStruct :: Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD{Bool
shaderEarlyAndLateFragmentTests :: Bool
$sel:shaderEarlyAndLateFragmentTests:PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> 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 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderEarlyAndLateFragmentTests))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> 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 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> 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 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD where
peekCStruct :: Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
peekCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p = do
Bool32
shaderEarlyAndLateFragmentTests <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
(Bool32 -> Bool
bool32ToBool Bool32
shaderEarlyAndLateFragmentTests)
instance Storable PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD where
sizeOf :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Int
sizeOf ~PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
_ = Int
24
alignment :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Int
alignment ~PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
_ = Int
8
peek :: Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
peek = Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO ()
poke Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
poked = Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD where
zero :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
zero = Bool -> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
Bool
forall a. Zero a => a
zero
type AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION = 1
pattern AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION :: forall a . Integral a => a
pattern $bAMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION :: a
$mAMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION = 1
type AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME = "VK_AMD_shader_early_and_late_fragment_tests"
pattern AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bAMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME :: a
$mAMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME = "VK_AMD_shader_early_and_late_fragment_tests"