{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_shader_clock ( PhysicalDeviceShaderClockFeaturesKHR(..)
, KHR_SHADER_CLOCK_SPEC_VERSION
, pattern KHR_SHADER_CLOCK_SPEC_VERSION
, KHR_SHADER_CLOCK_EXTENSION_NAME
, pattern KHR_SHADER_CLOCK_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
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 Foreign.Ptr (Ptr)
import Data.Kind (Type)
import Vulkan.Core10.BaseType (bool32ToBool)
import Vulkan.Core10.BaseType (boolToBool32)
import Vulkan.Core10.BaseType (Bool32)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR))
data PhysicalDeviceShaderClockFeaturesKHR = PhysicalDeviceShaderClockFeaturesKHR
{
PhysicalDeviceShaderClockFeaturesKHR -> Bool
shaderSubgroupClock :: Bool
,
PhysicalDeviceShaderClockFeaturesKHR -> Bool
shaderDeviceClock :: Bool
}
deriving (Typeable)
deriving instance Show PhysicalDeviceShaderClockFeaturesKHR
instance ToCStruct PhysicalDeviceShaderClockFeaturesKHR where
withCStruct :: PhysicalDeviceShaderClockFeaturesKHR
-> (Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b) -> IO b
withCStruct x :: PhysicalDeviceShaderClockFeaturesKHR
x f :: Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceShaderClockFeaturesKHR
p -> Ptr PhysicalDeviceShaderClockFeaturesKHR
-> PhysicalDeviceShaderClockFeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderClockFeaturesKHR
p PhysicalDeviceShaderClockFeaturesKHR
x (Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b
f Ptr PhysicalDeviceShaderClockFeaturesKHR
p)
pokeCStruct :: Ptr PhysicalDeviceShaderClockFeaturesKHR
-> PhysicalDeviceShaderClockFeaturesKHR -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceShaderClockFeaturesKHR
p PhysicalDeviceShaderClockFeaturesKHR{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSubgroupClock))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDeviceClock))
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceShaderClockFeaturesKHR -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceShaderClockFeaturesKHR
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceShaderClockFeaturesKHR where
peekCStruct :: Ptr PhysicalDeviceShaderClockFeaturesKHR
-> IO PhysicalDeviceShaderClockFeaturesKHR
peekCStruct p :: Ptr PhysicalDeviceShaderClockFeaturesKHR
p = do
Bool32
shaderSubgroupClock <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32))
Bool32
shaderDeviceClock <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderClockFeaturesKHR
p Ptr PhysicalDeviceShaderClockFeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32))
PhysicalDeviceShaderClockFeaturesKHR
-> IO PhysicalDeviceShaderClockFeaturesKHR
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceShaderClockFeaturesKHR
-> IO PhysicalDeviceShaderClockFeaturesKHR)
-> PhysicalDeviceShaderClockFeaturesKHR
-> IO PhysicalDeviceShaderClockFeaturesKHR
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> PhysicalDeviceShaderClockFeaturesKHR
PhysicalDeviceShaderClockFeaturesKHR
(Bool32 -> Bool
bool32ToBool Bool32
shaderSubgroupClock) (Bool32 -> Bool
bool32ToBool Bool32
shaderDeviceClock)
instance Storable PhysicalDeviceShaderClockFeaturesKHR where
sizeOf :: PhysicalDeviceShaderClockFeaturesKHR -> Int
sizeOf ~PhysicalDeviceShaderClockFeaturesKHR
_ = 24
alignment :: PhysicalDeviceShaderClockFeaturesKHR -> Int
alignment ~PhysicalDeviceShaderClockFeaturesKHR
_ = 8
peek :: Ptr PhysicalDeviceShaderClockFeaturesKHR
-> IO PhysicalDeviceShaderClockFeaturesKHR
peek = Ptr PhysicalDeviceShaderClockFeaturesKHR
-> IO PhysicalDeviceShaderClockFeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderClockFeaturesKHR
-> PhysicalDeviceShaderClockFeaturesKHR -> IO ()
poke ptr :: Ptr PhysicalDeviceShaderClockFeaturesKHR
ptr poked :: PhysicalDeviceShaderClockFeaturesKHR
poked = Ptr PhysicalDeviceShaderClockFeaturesKHR
-> PhysicalDeviceShaderClockFeaturesKHR -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderClockFeaturesKHR
ptr PhysicalDeviceShaderClockFeaturesKHR
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderClockFeaturesKHR where
zero :: PhysicalDeviceShaderClockFeaturesKHR
zero = Bool -> Bool -> PhysicalDeviceShaderClockFeaturesKHR
PhysicalDeviceShaderClockFeaturesKHR
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
type KHR_SHADER_CLOCK_SPEC_VERSION = 1
pattern KHR_SHADER_CLOCK_SPEC_VERSION :: forall a . Integral a => a
pattern $bKHR_SHADER_CLOCK_SPEC_VERSION :: a
$mKHR_SHADER_CLOCK_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
KHR_SHADER_CLOCK_SPEC_VERSION = 1
type KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock"
pattern KHR_SHADER_CLOCK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bKHR_SHADER_CLOCK_EXTENSION_NAME :: a
$mKHR_SHADER_CLOCK_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock"