{-# language CPP #-}
module Vulkan.Extensions.VK_QCOM_filter_cubic_clamp ( PhysicalDeviceCubicClampFeaturesQCOM(..)
, QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION
, pattern QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION
, QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME
, pattern QCOM_FILTER_CUBIC_CLAMP_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_CUBIC_CLAMP_FEATURES_QCOM))
data PhysicalDeviceCubicClampFeaturesQCOM = PhysicalDeviceCubicClampFeaturesQCOM
{
PhysicalDeviceCubicClampFeaturesQCOM -> Bool
cubicRangeClamp :: Bool }
deriving (Typeable, PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> Bool
$c/= :: PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> Bool
== :: PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> Bool
$c== :: PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceCubicClampFeaturesQCOM)
#endif
deriving instance Show PhysicalDeviceCubicClampFeaturesQCOM
instance ToCStruct PhysicalDeviceCubicClampFeaturesQCOM where
withCStruct :: forall b.
PhysicalDeviceCubicClampFeaturesQCOM
-> (Ptr PhysicalDeviceCubicClampFeaturesQCOM -> IO b) -> IO b
withCStruct PhysicalDeviceCubicClampFeaturesQCOM
x Ptr PhysicalDeviceCubicClampFeaturesQCOM -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceCubicClampFeaturesQCOM
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCubicClampFeaturesQCOM
p PhysicalDeviceCubicClampFeaturesQCOM
x (Ptr PhysicalDeviceCubicClampFeaturesQCOM -> IO b
f Ptr PhysicalDeviceCubicClampFeaturesQCOM
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCubicClampFeaturesQCOM
p PhysicalDeviceCubicClampFeaturesQCOM{Bool
cubicRangeClamp :: Bool
$sel:cubicRangeClamp:PhysicalDeviceCubicClampFeaturesQCOM :: PhysicalDeviceCubicClampFeaturesQCOM -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCubicClampFeaturesQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCubicClampFeaturesQCOM
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 PhysicalDeviceCubicClampFeaturesQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
cubicRangeClamp))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceCubicClampFeaturesQCOM -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceCubicClampFeaturesQCOM
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCubicClampFeaturesQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCubicClampFeaturesQCOM
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 PhysicalDeviceCubicClampFeaturesQCOM
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 PhysicalDeviceCubicClampFeaturesQCOM where
peekCStruct :: Ptr PhysicalDeviceCubicClampFeaturesQCOM
-> IO PhysicalDeviceCubicClampFeaturesQCOM
peekCStruct Ptr PhysicalDeviceCubicClampFeaturesQCOM
p = do
Bool32
cubicRangeClamp <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceCubicClampFeaturesQCOM
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 -> PhysicalDeviceCubicClampFeaturesQCOM
PhysicalDeviceCubicClampFeaturesQCOM
(Bool32 -> Bool
bool32ToBool Bool32
cubicRangeClamp)
instance Storable PhysicalDeviceCubicClampFeaturesQCOM where
sizeOf :: PhysicalDeviceCubicClampFeaturesQCOM -> Int
sizeOf ~PhysicalDeviceCubicClampFeaturesQCOM
_ = Int
24
alignment :: PhysicalDeviceCubicClampFeaturesQCOM -> Int
alignment ~PhysicalDeviceCubicClampFeaturesQCOM
_ = Int
8
peek :: Ptr PhysicalDeviceCubicClampFeaturesQCOM
-> IO PhysicalDeviceCubicClampFeaturesQCOM
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceCubicClampFeaturesQCOM
-> PhysicalDeviceCubicClampFeaturesQCOM -> IO ()
poke Ptr PhysicalDeviceCubicClampFeaturesQCOM
ptr PhysicalDeviceCubicClampFeaturesQCOM
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCubicClampFeaturesQCOM
ptr PhysicalDeviceCubicClampFeaturesQCOM
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceCubicClampFeaturesQCOM where
zero :: PhysicalDeviceCubicClampFeaturesQCOM
zero = Bool -> PhysicalDeviceCubicClampFeaturesQCOM
PhysicalDeviceCubicClampFeaturesQCOM
forall a. Zero a => a
zero
type QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1
pattern QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION :: forall a . Integral a => a
pattern $bQCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION :: forall a. Integral a => a
$mQCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION = 1
type QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp"
pattern QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bQCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mQCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME = "VK_QCOM_filter_cubic_clamp"