{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_shader_long_vector ( PhysicalDeviceShaderLongVectorFeaturesEXT(..)
, PhysicalDeviceShaderLongVectorPropertiesEXT(..)
, EXT_SHADER_LONG_VECTOR_SPEC_VERSION
, pattern EXT_SHADER_LONG_VECTOR_SPEC_VERSION
, EXT_SHADER_LONG_VECTOR_EXTENSION_NAME
, pattern EXT_SHADER_LONG_VECTOR_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.Word (Word32)
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_LONG_VECTOR_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT))
data PhysicalDeviceShaderLongVectorFeaturesEXT = PhysicalDeviceShaderLongVectorFeaturesEXT
{
PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
longVector :: Bool }
deriving (Typeable, PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
(PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool)
-> (PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool)
-> Eq PhysicalDeviceShaderLongVectorFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
== :: PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
$c/= :: PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
/= :: PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderLongVectorFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceShaderLongVectorFeaturesEXT
instance ToCStruct PhysicalDeviceShaderLongVectorFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceShaderLongVectorFeaturesEXT
-> (Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b) -> IO b
withCStruct PhysicalDeviceShaderLongVectorFeaturesEXT
x Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p -> Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p PhysicalDeviceShaderLongVectorFeaturesEXT
x (Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b
f Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p PhysicalDeviceShaderLongVectorFeaturesEXT{Bool
longVector :: PhysicalDeviceShaderLongVectorFeaturesEXT -> Bool
longVector :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> 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 PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
longVector))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> 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 PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> 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 PhysicalDeviceShaderLongVectorFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> IO PhysicalDeviceShaderLongVectorFeaturesEXT
peekCStruct Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p = do
longVector <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
p Ptr PhysicalDeviceShaderLongVectorFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceShaderLongVectorFeaturesEXT
(bool32ToBool longVector)
instance Storable PhysicalDeviceShaderLongVectorFeaturesEXT where
sizeOf :: PhysicalDeviceShaderLongVectorFeaturesEXT -> Int
sizeOf ~PhysicalDeviceShaderLongVectorFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceShaderLongVectorFeaturesEXT -> Int
alignment ~PhysicalDeviceShaderLongVectorFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> IO PhysicalDeviceShaderLongVectorFeaturesEXT
peek = Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> IO PhysicalDeviceShaderLongVectorFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
ptr PhysicalDeviceShaderLongVectorFeaturesEXT
poked = Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
-> PhysicalDeviceShaderLongVectorFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderLongVectorFeaturesEXT
ptr PhysicalDeviceShaderLongVectorFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderLongVectorFeaturesEXT where
zero :: PhysicalDeviceShaderLongVectorFeaturesEXT
zero = Bool -> PhysicalDeviceShaderLongVectorFeaturesEXT
PhysicalDeviceShaderLongVectorFeaturesEXT
Bool
forall a. Zero a => a
zero
data PhysicalDeviceShaderLongVectorPropertiesEXT = PhysicalDeviceShaderLongVectorPropertiesEXT
{
PhysicalDeviceShaderLongVectorPropertiesEXT -> Word32
maxVectorComponents :: Word32 }
deriving (Typeable, PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool
(PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool)
-> (PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool)
-> Eq PhysicalDeviceShaderLongVectorPropertiesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool
== :: PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool
$c/= :: PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool
/= :: PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderLongVectorPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceShaderLongVectorPropertiesEXT
instance ToCStruct PhysicalDeviceShaderLongVectorPropertiesEXT where
withCStruct :: forall b.
PhysicalDeviceShaderLongVectorPropertiesEXT
-> (Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceShaderLongVectorPropertiesEXT
x Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p -> Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p PhysicalDeviceShaderLongVectorPropertiesEXT
x (Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b
f Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p PhysicalDeviceShaderLongVectorPropertiesEXT{Word32
maxVectorComponents :: PhysicalDeviceShaderLongVectorPropertiesEXT -> Word32
maxVectorComponents :: Word32
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
maxVectorComponents)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceShaderLongVectorPropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> IO PhysicalDeviceShaderLongVectorPropertiesEXT
peekCStruct Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p = do
maxVectorComponents <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
p Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pure $ PhysicalDeviceShaderLongVectorPropertiesEXT
maxVectorComponents
instance Storable PhysicalDeviceShaderLongVectorPropertiesEXT where
sizeOf :: PhysicalDeviceShaderLongVectorPropertiesEXT -> Int
sizeOf ~PhysicalDeviceShaderLongVectorPropertiesEXT
_ = Int
24
alignment :: PhysicalDeviceShaderLongVectorPropertiesEXT -> Int
alignment ~PhysicalDeviceShaderLongVectorPropertiesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> IO PhysicalDeviceShaderLongVectorPropertiesEXT
peek = Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> IO PhysicalDeviceShaderLongVectorPropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> IO ()
poke Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
ptr PhysicalDeviceShaderLongVectorPropertiesEXT
poked = Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
-> PhysicalDeviceShaderLongVectorPropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderLongVectorPropertiesEXT
ptr PhysicalDeviceShaderLongVectorPropertiesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderLongVectorPropertiesEXT where
zero :: PhysicalDeviceShaderLongVectorPropertiesEXT
zero = Word32 -> PhysicalDeviceShaderLongVectorPropertiesEXT
PhysicalDeviceShaderLongVectorPropertiesEXT
Word32
forall a. Zero a => a
zero
type EXT_SHADER_LONG_VECTOR_SPEC_VERSION = 1
pattern EXT_SHADER_LONG_VECTOR_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_SHADER_LONG_VECTOR_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_SHADER_LONG_VECTOR_SPEC_VERSION :: forall a. Integral a => a
EXT_SHADER_LONG_VECTOR_SPEC_VERSION = 1
type EXT_SHADER_LONG_VECTOR_EXTENSION_NAME = "VK_EXT_shader_long_vector"
pattern EXT_SHADER_LONG_VECTOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_SHADER_LONG_VECTOR_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_SHADER_LONG_VECTOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_SHADER_LONG_VECTOR_EXTENSION_NAME = "VK_EXT_shader_long_vector"