{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_shader_64bit_indexing ( PhysicalDeviceShader64BitIndexingFeaturesEXT(..)
, EXT_SHADER_64BIT_INDEXING_SPEC_VERSION
, pattern EXT_SHADER_64BIT_INDEXING_SPEC_VERSION
, EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME
, pattern EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME
, ShaderCreateFlagBitsEXT(..)
, ShaderCreateFlagsEXT
) 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_64_BIT_INDEXING_FEATURES_EXT))
import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
data PhysicalDeviceShader64BitIndexingFeaturesEXT = PhysicalDeviceShader64BitIndexingFeaturesEXT
{
PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
shader64BitIndexing :: Bool }
deriving (Typeable, PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
(PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool)
-> (PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool)
-> Eq PhysicalDeviceShader64BitIndexingFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
== :: PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
$c/= :: PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
/= :: PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShader64BitIndexingFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceShader64BitIndexingFeaturesEXT
instance ToCStruct PhysicalDeviceShader64BitIndexingFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceShader64BitIndexingFeaturesEXT
-> (Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceShader64BitIndexingFeaturesEXT
x Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p -> Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p PhysicalDeviceShader64BitIndexingFeaturesEXT
x (Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b
f Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p PhysicalDeviceShader64BitIndexingFeaturesEXT{Bool
shader64BitIndexing :: PhysicalDeviceShader64BitIndexingFeaturesEXT -> Bool
shader64BitIndexing :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> 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 PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shader64BitIndexing))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> 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 PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> 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 PhysicalDeviceShader64BitIndexingFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> IO PhysicalDeviceShader64BitIndexingFeaturesEXT
peekCStruct Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p = do
shader64BitIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
p Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceShader64BitIndexingFeaturesEXT
(bool32ToBool shader64BitIndexing)
instance Storable PhysicalDeviceShader64BitIndexingFeaturesEXT where
sizeOf :: PhysicalDeviceShader64BitIndexingFeaturesEXT -> Int
sizeOf ~PhysicalDeviceShader64BitIndexingFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceShader64BitIndexingFeaturesEXT -> Int
alignment ~PhysicalDeviceShader64BitIndexingFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> IO PhysicalDeviceShader64BitIndexingFeaturesEXT
peek = Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> IO PhysicalDeviceShader64BitIndexingFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
poked = Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
-> PhysicalDeviceShader64BitIndexingFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
ptr PhysicalDeviceShader64BitIndexingFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShader64BitIndexingFeaturesEXT where
zero :: PhysicalDeviceShader64BitIndexingFeaturesEXT
zero = Bool -> PhysicalDeviceShader64BitIndexingFeaturesEXT
PhysicalDeviceShader64BitIndexingFeaturesEXT
Bool
forall a. Zero a => a
zero
type EXT_SHADER_64BIT_INDEXING_SPEC_VERSION = 1
pattern EXT_SHADER_64BIT_INDEXING_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_SHADER_64BIT_INDEXING_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_SHADER_64BIT_INDEXING_SPEC_VERSION :: forall a. Integral a => a
EXT_SHADER_64BIT_INDEXING_SPEC_VERSION = 1
type EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME = "VK_EXT_shader_64bit_indexing"
pattern EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_SHADER_64BIT_INDEXING_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_SHADER_64BIT_INDEXING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME = "VK_EXT_shader_64bit_indexing"