{-# language CPP #-}
module Vulkan.Extensions.VK_NV_shader_sm_builtins ( PhysicalDeviceShaderSMBuiltinsPropertiesNV(..)
, PhysicalDeviceShaderSMBuiltinsFeaturesNV(..)
, NV_SHADER_SM_BUILTINS_SPEC_VERSION
, pattern NV_SHADER_SM_BUILTINS_SPEC_VERSION
, NV_SHADER_SM_BUILTINS_EXTENSION_NAME
, pattern NV_SHADER_SM_BUILTINS_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.Word (Word32)
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_SM_BUILTINS_FEATURES_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV))
data PhysicalDeviceShaderSMBuiltinsPropertiesNV = PhysicalDeviceShaderSMBuiltinsPropertiesNV
{
PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Word32
shaderSMCount :: Word32
,
PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Word32
shaderWarpsPerSM :: Word32
}
deriving (Typeable)
deriving instance Show PhysicalDeviceShaderSMBuiltinsPropertiesNV
instance ToCStruct PhysicalDeviceShaderSMBuiltinsPropertiesNV where
withCStruct :: PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> (Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b) -> IO b
withCStruct x :: PhysicalDeviceShaderSMBuiltinsPropertiesNV
x f :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p -> Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p PhysicalDeviceShaderSMBuiltinsPropertiesNV
x (Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b
f Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p)
pokeCStruct :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p PhysicalDeviceShaderSMBuiltinsPropertiesNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
shaderSMCount)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) (Word32
shaderWarpsPerSM)
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceShaderSMBuiltinsPropertiesNV where
peekCStruct :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> IO PhysicalDeviceShaderSMBuiltinsPropertiesNV
peekCStruct p :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p = do
Word32
shaderSMCount <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
Word32
shaderWarpsPerSM <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
p Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> IO PhysicalDeviceShaderSMBuiltinsPropertiesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> IO PhysicalDeviceShaderSMBuiltinsPropertiesNV)
-> PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> IO PhysicalDeviceShaderSMBuiltinsPropertiesNV
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> PhysicalDeviceShaderSMBuiltinsPropertiesNV
PhysicalDeviceShaderSMBuiltinsPropertiesNV
Word32
shaderSMCount Word32
shaderWarpsPerSM
instance Storable PhysicalDeviceShaderSMBuiltinsPropertiesNV where
sizeOf :: PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int
sizeOf ~PhysicalDeviceShaderSMBuiltinsPropertiesNV
_ = 24
alignment :: PhysicalDeviceShaderSMBuiltinsPropertiesNV -> Int
alignment ~PhysicalDeviceShaderSMBuiltinsPropertiesNV
_ = 8
peek :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> IO PhysicalDeviceShaderSMBuiltinsPropertiesNV
peek = Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> IO PhysicalDeviceShaderSMBuiltinsPropertiesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO ()
poke ptr :: Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
ptr poked :: PhysicalDeviceShaderSMBuiltinsPropertiesNV
poked = Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
-> PhysicalDeviceShaderSMBuiltinsPropertiesNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
ptr PhysicalDeviceShaderSMBuiltinsPropertiesNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderSMBuiltinsPropertiesNV where
zero :: PhysicalDeviceShaderSMBuiltinsPropertiesNV
zero = Word32 -> Word32 -> PhysicalDeviceShaderSMBuiltinsPropertiesNV
PhysicalDeviceShaderSMBuiltinsPropertiesNV
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
data PhysicalDeviceShaderSMBuiltinsFeaturesNV = PhysicalDeviceShaderSMBuiltinsFeaturesNV
{
PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Bool
shaderSMBuiltins :: Bool }
deriving (Typeable)
deriving instance Show PhysicalDeviceShaderSMBuiltinsFeaturesNV
instance ToCStruct PhysicalDeviceShaderSMBuiltinsFeaturesNV where
withCStruct :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> (Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b) -> IO b
withCStruct x :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
x f :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p -> Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p PhysicalDeviceShaderSMBuiltinsFeaturesNV
x (Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b
f Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p)
pokeCStruct :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p PhysicalDeviceShaderSMBuiltinsFeaturesNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> 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 PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSMBuiltins))
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> 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 PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> 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))
IO b
f
instance FromCStruct PhysicalDeviceShaderSMBuiltinsFeaturesNV where
peekCStruct :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> IO PhysicalDeviceShaderSMBuiltinsFeaturesNV
peekCStruct p :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p = do
Bool32
shaderSMBuiltins <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
p Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32))
PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> IO PhysicalDeviceShaderSMBuiltinsFeaturesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> IO PhysicalDeviceShaderSMBuiltinsFeaturesNV)
-> PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> IO PhysicalDeviceShaderSMBuiltinsFeaturesNV
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceShaderSMBuiltinsFeaturesNV
PhysicalDeviceShaderSMBuiltinsFeaturesNV
(Bool32 -> Bool
bool32ToBool Bool32
shaderSMBuiltins)
instance Storable PhysicalDeviceShaderSMBuiltinsFeaturesNV where
sizeOf :: PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Int
sizeOf ~PhysicalDeviceShaderSMBuiltinsFeaturesNV
_ = 24
alignment :: PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Int
alignment ~PhysicalDeviceShaderSMBuiltinsFeaturesNV
_ = 8
peek :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> IO PhysicalDeviceShaderSMBuiltinsFeaturesNV
peek = Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> IO PhysicalDeviceShaderSMBuiltinsFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO ()
poke ptr :: Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
ptr poked :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
poked = Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> PhysicalDeviceShaderSMBuiltinsFeaturesNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
ptr PhysicalDeviceShaderSMBuiltinsFeaturesNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderSMBuiltinsFeaturesNV where
zero :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
zero = Bool -> PhysicalDeviceShaderSMBuiltinsFeaturesNV
PhysicalDeviceShaderSMBuiltinsFeaturesNV
Bool
forall a. Zero a => a
zero
type NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1
pattern NV_SHADER_SM_BUILTINS_SPEC_VERSION :: forall a . Integral a => a
pattern $bNV_SHADER_SM_BUILTINS_SPEC_VERSION :: a
$mNV_SHADER_SM_BUILTINS_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1
type NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins"
pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bNV_SHADER_SM_BUILTINS_EXTENSION_NAME :: a
$mNV_SHADER_SM_BUILTINS_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins"