{-# language CPP #-}
module Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion ( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM(..)
, QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION
, pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION
, QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME
, pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_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_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM))
data PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
{
PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
cooperativeMatrixConversion :: Bool }
deriving (Typeable, PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
(PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool)
-> (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool)
-> Eq PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
== :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
$c/= :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
/= :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM)
#endif
deriving instance Show PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
instance ToCStruct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
withCStruct :: forall b.
PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> (Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b)
-> IO b
withCStruct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
x Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> IO b
f = Int
-> (Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b)
-> IO b)
-> (Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p -> Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
x (Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> IO b
f Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM{Bool
cooperativeMatrixConversion :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Bool
cooperativeMatrixConversion :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> 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 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
cooperativeMatrixConversion))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> 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 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> 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 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
peekCStruct :: Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
peekCStruct Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p = do
cooperativeMatrixConversion <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
p Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
(bool32ToBool cooperativeMatrixConversion)
instance Storable PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
sizeOf :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Int
sizeOf ~PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
_ = Int
24
alignment :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> Int
alignment ~PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
_ = Int
8
peek :: Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
peek = Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM -> IO ()
poke Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
poked = Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
ptr PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
zero :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
zero = Bool -> PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
Bool
forall a. Zero a => a
zero
type QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION = 1
pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION :: forall a . Integral a => a
pattern $mQCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bQCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION :: forall a. Integral a => a
QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION = 1
type QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME = "VK_QCOM_cooperative_matrix_conversion"
pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mQCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bQCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME = "VK_QCOM_cooperative_matrix_conversion"