{-# 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
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 :: forall b.
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> (Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b)
-> IO b
withCStruct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
x Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p -> 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 :: forall b.
Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD{Bool
shaderEarlyAndLateFragmentTests :: Bool
$sel:shaderEarlyAndLateFragmentTests:PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p 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)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p 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 :: forall b.
Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p 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)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (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 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure 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 = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-> IO ()
poke Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
ptr PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD where
zero :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
zero = Bool -> PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
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 :: forall a. Integral a => a
$mAMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> 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 :: forall a. (Eq a, IsString a) => a
$mAMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME = "VK_AMD_shader_early_and_late_fragment_tests"