{-# language CPP #-}
module Vulkan.Extensions.VK_NV_cooperative_matrix ( getPhysicalDeviceCooperativeMatrixPropertiesNV
, pattern SCOPE_DEVICE_NV
, pattern SCOPE_WORKGROUP_NV
, pattern SCOPE_SUBGROUP_NV
, pattern SCOPE_QUEUE_FAMILY_NV
, pattern COMPONENT_TYPE_FLOAT16_NV
, pattern COMPONENT_TYPE_FLOAT32_NV
, pattern COMPONENT_TYPE_FLOAT64_NV
, pattern COMPONENT_TYPE_SINT8_NV
, pattern COMPONENT_TYPE_SINT16_NV
, pattern COMPONENT_TYPE_SINT32_NV
, pattern COMPONENT_TYPE_SINT64_NV
, pattern COMPONENT_TYPE_UINT8_NV
, pattern COMPONENT_TYPE_UINT16_NV
, pattern COMPONENT_TYPE_UINT32_NV
, pattern COMPONENT_TYPE_UINT64_NV
, PhysicalDeviceCooperativeMatrixFeaturesNV(..)
, PhysicalDeviceCooperativeMatrixPropertiesNV(..)
, CooperativeMatrixPropertiesNV(..)
, ScopeNV
, ComponentTypeNV
, NV_COOPERATIVE_MATRIX_SPEC_VERSION
, pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION
, NV_COOPERATIVE_MATRIX_EXTENSION_NAME
, pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME
, ScopeKHR(..)
, ComponentTypeKHR(..)
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
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 GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Data.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR)
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV))
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_FLOAT16_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_FLOAT32_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_FLOAT64_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT16_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT32_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT64_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT8_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT16_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT32_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT64_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT8_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_DEVICE_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_QUEUE_FAMILY_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_SUBGROUP_KHR))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_WORKGROUP_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(..))
import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceCooperativeMatrixPropertiesNV
:: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result
getPhysicalDeviceCooperativeMatrixPropertiesNV :: forall io
. (MonadIO io)
=>
PhysicalDevice
-> io (Result, ("properties" ::: Vector CooperativeMatrixPropertiesNV))
getPhysicalDeviceCooperativeMatrixPropertiesNV :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice
-> io
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
getPhysicalDeviceCooperativeMatrixPropertiesNV PhysicalDevice
physicalDevice = IO (Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> io
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> io
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> (ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> io
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> io
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> io
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a b. (a -> b) -> a -> b
$ do
let vkGetPhysicalDeviceCooperativeMatrixPropertiesNVPtr :: FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
vkGetPhysicalDeviceCooperativeMatrixPropertiesNVPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: InstanceCmds
$sel:instanceCmds:PhysicalDevice :: PhysicalDevice -> InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
())
-> IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
vkGetPhysicalDeviceCooperativeMatrixPropertiesNVPtr FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
-> FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPhysicalDeviceCooperativeMatrixPropertiesNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetPhysicalDeviceCooperativeMatrixPropertiesNV' :: Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV' = FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
-> Ptr PhysicalDevice_T
-> Ptr Word32
-> Ptr CooperativeMatrixPropertiesNV
-> IO Result
mkVkGetPhysicalDeviceCooperativeMatrixPropertiesNV FunPtr
(Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result)
vkGetPhysicalDeviceCooperativeMatrixPropertiesNVPtr
let physicalDevice' :: Ptr PhysicalDevice_T
physicalDevice' = PhysicalDevice -> Ptr PhysicalDevice_T
physicalDeviceHandle (PhysicalDevice
physicalDevice)
Ptr Word32
pPPropertyCount <- ((Ptr Word32
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Ptr Word32)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Word32
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Ptr Word32))
-> ((Ptr Word32
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Ptr Word32)
forall a b. (a -> b) -> a -> b
$ IO (Ptr Word32)
-> (Ptr Word32 -> IO ())
-> (Ptr Word32
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @Word32 Int
4) Ptr Word32 -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Result
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Result)
-> IO Result
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" (Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV'
Ptr PhysicalDevice_T
physicalDevice'
(Ptr Word32
pPPropertyCount)
(Ptr CooperativeMatrixPropertiesNV
forall a. Ptr a
nullPtr))
IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
())
-> IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
Word32
pPropertyCount <- IO Word32
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Word32
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Word32
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Word32)
-> IO Word32
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Word32
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @Word32 Ptr Word32
pPPropertyCount
Ptr CooperativeMatrixPropertiesNV
pPProperties <- ((Ptr CooperativeMatrixPropertiesNV
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Ptr CooperativeMatrixPropertiesNV)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CooperativeMatrixPropertiesNV
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Ptr CooperativeMatrixPropertiesNV))
-> ((Ptr CooperativeMatrixPropertiesNV
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Ptr CooperativeMatrixPropertiesNV)
forall a b. (a -> b) -> a -> b
$ IO (Ptr CooperativeMatrixPropertiesNV)
-> (Ptr CooperativeMatrixPropertiesNV -> IO ())
-> (Ptr CooperativeMatrixPropertiesNV
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @CooperativeMatrixPropertiesNV ((Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32
pPropertyCount)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
48)) Ptr CooperativeMatrixPropertiesNV -> IO ()
forall a. Ptr a -> IO ()
free
[()]
_ <- (Int
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
())
-> [Int]
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
[()]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> [a] -> f [b]
traverse (\Int
i -> ((()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
())
-> ((()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall a b. (a -> b) -> a -> b
$ Ptr CooperativeMatrixPropertiesNV
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall b. Ptr CooperativeMatrixPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> IO b -> IO b
pokeZeroCStruct (Ptr CooperativeMatrixPropertiesNV
pPProperties Ptr CooperativeMatrixPropertiesNV
-> Int -> Ptr CooperativeMatrixPropertiesNV
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
48) :: Ptr CooperativeMatrixPropertiesNV) (IO (Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ((()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> (()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> ()
-> IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a b. (a -> b) -> a -> b
$ ())) [Int
0..(Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32
pPropertyCount)) Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1]
Result
r' <- IO Result
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Result
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Result)
-> IO Result
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" (Ptr PhysicalDevice_T
-> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV'
Ptr PhysicalDevice_T
physicalDevice'
(Ptr Word32
pPPropertyCount)
((Ptr CooperativeMatrixPropertiesNV
pPProperties)))
IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
())
-> IO ()
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r' Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r'))
Word32
pPropertyCount' <- IO Word32
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Word32
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Word32
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Word32)
-> IO Word32
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
Word32
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @Word32 Ptr Word32
pPPropertyCount
"properties" ::: Vector CooperativeMatrixPropertiesNV
pProperties' <- IO ("properties" ::: Vector CooperativeMatrixPropertiesNV)
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
("properties" ::: Vector CooperativeMatrixPropertiesNV)
forall (m :: * -> *) a.
Monad m =>
m a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("properties" ::: Vector CooperativeMatrixPropertiesNV)
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
("properties" ::: Vector CooperativeMatrixPropertiesNV))
-> IO ("properties" ::: Vector CooperativeMatrixPropertiesNV)
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
("properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a b. (a -> b) -> a -> b
$ Int
-> (Int -> IO CooperativeMatrixPropertiesNV)
-> IO ("properties" ::: Vector CooperativeMatrixPropertiesNV)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32
pPropertyCount')) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @CooperativeMatrixPropertiesNV (((Ptr CooperativeMatrixPropertiesNV
pPProperties) Ptr CooperativeMatrixPropertiesNV
-> Int -> Ptr CooperativeMatrixPropertiesNV
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
48 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr CooperativeMatrixPropertiesNV)))
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a.
a
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ((Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV))
-> (Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
-> ContT
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
IO
(Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
forall a b. (a -> b) -> a -> b
$ ((Result
r'), "properties" ::: Vector CooperativeMatrixPropertiesNV
pProperties')
pattern $bSCOPE_DEVICE_NV :: ScopeKHR
$mSCOPE_DEVICE_NV :: forall {r}. ScopeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
SCOPE_DEVICE_NV = SCOPE_DEVICE_KHR
pattern $bSCOPE_WORKGROUP_NV :: ScopeKHR
$mSCOPE_WORKGROUP_NV :: forall {r}. ScopeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
SCOPE_WORKGROUP_NV = SCOPE_WORKGROUP_KHR
pattern $bSCOPE_SUBGROUP_NV :: ScopeKHR
$mSCOPE_SUBGROUP_NV :: forall {r}. ScopeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
SCOPE_SUBGROUP_NV = SCOPE_SUBGROUP_KHR
pattern $bSCOPE_QUEUE_FAMILY_NV :: ScopeKHR
$mSCOPE_QUEUE_FAMILY_NV :: forall {r}. ScopeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
SCOPE_QUEUE_FAMILY_NV = SCOPE_QUEUE_FAMILY_KHR
pattern $bCOMPONENT_TYPE_FLOAT16_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_FLOAT16_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_FLOAT16_NV = COMPONENT_TYPE_FLOAT16_KHR
pattern $bCOMPONENT_TYPE_FLOAT32_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_FLOAT32_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_FLOAT32_NV = COMPONENT_TYPE_FLOAT32_KHR
pattern $bCOMPONENT_TYPE_FLOAT64_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_FLOAT64_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_FLOAT64_NV = COMPONENT_TYPE_FLOAT64_KHR
pattern $bCOMPONENT_TYPE_SINT8_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_SINT8_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_SINT8_NV = COMPONENT_TYPE_SINT8_KHR
pattern $bCOMPONENT_TYPE_SINT16_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_SINT16_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_SINT16_NV = COMPONENT_TYPE_SINT16_KHR
pattern $bCOMPONENT_TYPE_SINT32_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_SINT32_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_SINT32_NV = COMPONENT_TYPE_SINT32_KHR
pattern $bCOMPONENT_TYPE_SINT64_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_SINT64_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_SINT64_NV = COMPONENT_TYPE_SINT64_KHR
pattern $bCOMPONENT_TYPE_UINT8_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_UINT8_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_UINT8_NV = COMPONENT_TYPE_UINT8_KHR
pattern $bCOMPONENT_TYPE_UINT16_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_UINT16_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_UINT16_NV = COMPONENT_TYPE_UINT16_KHR
pattern $bCOMPONENT_TYPE_UINT32_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_UINT32_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_UINT32_NV = COMPONENT_TYPE_UINT32_KHR
pattern $bCOMPONENT_TYPE_UINT64_NV :: ComponentTypeKHR
$mCOMPONENT_TYPE_UINT64_NV :: forall {r}. ComponentTypeKHR -> ((# #) -> r) -> ((# #) -> r) -> r
COMPONENT_TYPE_UINT64_NV = COMPONENT_TYPE_UINT64_KHR
data PhysicalDeviceCooperativeMatrixFeaturesNV = PhysicalDeviceCooperativeMatrixFeaturesNV
{
PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
cooperativeMatrix :: Bool
,
PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
cooperativeMatrixRobustBufferAccess :: Bool
}
deriving (Typeable, PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
(PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool)
-> (PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool)
-> Eq PhysicalDeviceCooperativeMatrixFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
== :: PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
$c/= :: PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
/= :: PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceCooperativeMatrixFeaturesNV)
#endif
deriving instance Show PhysicalDeviceCooperativeMatrixFeaturesNV
instance ToCStruct PhysicalDeviceCooperativeMatrixFeaturesNV where
withCStruct :: forall b.
PhysicalDeviceCooperativeMatrixFeaturesNV
-> (Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b) -> IO b
withCStruct PhysicalDeviceCooperativeMatrixFeaturesNV
x Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b) -> IO b)
-> (Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p -> Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b -> IO b
forall b.
Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p PhysicalDeviceCooperativeMatrixFeaturesNV
x (Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b
f Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p PhysicalDeviceCooperativeMatrixFeaturesNV{Bool
$sel:cooperativeMatrix:PhysicalDeviceCooperativeMatrixFeaturesNV :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
$sel:cooperativeMatrixRobustBufferAccess:PhysicalDeviceCooperativeMatrixFeaturesNV :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
cooperativeMatrix :: Bool
cooperativeMatrixRobustBufferAccess :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> 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 PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
cooperativeMatrix))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
cooperativeMatrixRobustBufferAccess))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> 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 PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> 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))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceCooperativeMatrixFeaturesNV where
peekCStruct :: Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> IO PhysicalDeviceCooperativeMatrixFeaturesNV
peekCStruct Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p = do
Bool32
cooperativeMatrix <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
Bool32
cooperativeMatrixRobustBufferAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
p Ptr PhysicalDeviceCooperativeMatrixFeaturesNV -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
PhysicalDeviceCooperativeMatrixFeaturesNV
-> IO PhysicalDeviceCooperativeMatrixFeaturesNV
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceCooperativeMatrixFeaturesNV
-> IO PhysicalDeviceCooperativeMatrixFeaturesNV)
-> PhysicalDeviceCooperativeMatrixFeaturesNV
-> IO PhysicalDeviceCooperativeMatrixFeaturesNV
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> PhysicalDeviceCooperativeMatrixFeaturesNV
PhysicalDeviceCooperativeMatrixFeaturesNV
(Bool32 -> Bool
bool32ToBool Bool32
cooperativeMatrix)
(Bool32 -> Bool
bool32ToBool Bool32
cooperativeMatrixRobustBufferAccess)
instance Storable PhysicalDeviceCooperativeMatrixFeaturesNV where
sizeOf :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Int
sizeOf ~PhysicalDeviceCooperativeMatrixFeaturesNV
_ = Int
24
alignment :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Int
alignment ~PhysicalDeviceCooperativeMatrixFeaturesNV
_ = Int
8
peek :: Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> IO PhysicalDeviceCooperativeMatrixFeaturesNV
peek = Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> IO PhysicalDeviceCooperativeMatrixFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> IO ()
poke Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
ptr PhysicalDeviceCooperativeMatrixFeaturesNV
poked = Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixFeaturesNV
ptr PhysicalDeviceCooperativeMatrixFeaturesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceCooperativeMatrixFeaturesNV where
zero :: PhysicalDeviceCooperativeMatrixFeaturesNV
zero = Bool -> Bool -> PhysicalDeviceCooperativeMatrixFeaturesNV
PhysicalDeviceCooperativeMatrixFeaturesNV
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PhysicalDeviceCooperativeMatrixPropertiesNV = PhysicalDeviceCooperativeMatrixPropertiesNV
{
PhysicalDeviceCooperativeMatrixPropertiesNV -> ShaderStageFlags
cooperativeMatrixSupportedStages :: ShaderStageFlags }
deriving (Typeable, PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool
(PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool)
-> (PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool)
-> Eq PhysicalDeviceCooperativeMatrixPropertiesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool
== :: PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool
$c/= :: PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool
/= :: PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceCooperativeMatrixPropertiesNV)
#endif
deriving instance Show PhysicalDeviceCooperativeMatrixPropertiesNV
instance ToCStruct PhysicalDeviceCooperativeMatrixPropertiesNV where
withCStruct :: forall b.
PhysicalDeviceCooperativeMatrixPropertiesNV
-> (Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b)
-> IO b
withCStruct PhysicalDeviceCooperativeMatrixPropertiesNV
x Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b) -> IO b)
-> (Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p -> Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b -> IO b
forall b.
Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p PhysicalDeviceCooperativeMatrixPropertiesNV
x (Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b
f Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p PhysicalDeviceCooperativeMatrixPropertiesNV{ShaderStageFlags
$sel:cooperativeMatrixSupportedStages:PhysicalDeviceCooperativeMatrixPropertiesNV :: PhysicalDeviceCooperativeMatrixPropertiesNV -> ShaderStageFlags
cooperativeMatrixSupportedStages :: ShaderStageFlags
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderStageFlags)) (ShaderStageFlags
cooperativeMatrixSupportedStages)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceCooperativeMatrixPropertiesNV where
peekCStruct :: Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> IO PhysicalDeviceCooperativeMatrixPropertiesNV
peekCStruct Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p = do
ShaderStageFlags
cooperativeMatrixSupportedStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
p Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderStageFlags))
PhysicalDeviceCooperativeMatrixPropertiesNV
-> IO PhysicalDeviceCooperativeMatrixPropertiesNV
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceCooperativeMatrixPropertiesNV
-> IO PhysicalDeviceCooperativeMatrixPropertiesNV)
-> PhysicalDeviceCooperativeMatrixPropertiesNV
-> IO PhysicalDeviceCooperativeMatrixPropertiesNV
forall a b. (a -> b) -> a -> b
$ ShaderStageFlags -> PhysicalDeviceCooperativeMatrixPropertiesNV
PhysicalDeviceCooperativeMatrixPropertiesNV
ShaderStageFlags
cooperativeMatrixSupportedStages
instance Storable PhysicalDeviceCooperativeMatrixPropertiesNV where
sizeOf :: PhysicalDeviceCooperativeMatrixPropertiesNV -> Int
sizeOf ~PhysicalDeviceCooperativeMatrixPropertiesNV
_ = Int
24
alignment :: PhysicalDeviceCooperativeMatrixPropertiesNV -> Int
alignment ~PhysicalDeviceCooperativeMatrixPropertiesNV
_ = Int
8
peek :: Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> IO PhysicalDeviceCooperativeMatrixPropertiesNV
peek = Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> IO PhysicalDeviceCooperativeMatrixPropertiesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> IO ()
poke Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
ptr PhysicalDeviceCooperativeMatrixPropertiesNV
poked = Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
-> PhysicalDeviceCooperativeMatrixPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCooperativeMatrixPropertiesNV
ptr PhysicalDeviceCooperativeMatrixPropertiesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceCooperativeMatrixPropertiesNV where
zero :: PhysicalDeviceCooperativeMatrixPropertiesNV
zero = ShaderStageFlags -> PhysicalDeviceCooperativeMatrixPropertiesNV
PhysicalDeviceCooperativeMatrixPropertiesNV
ShaderStageFlags
forall a. Zero a => a
zero
data CooperativeMatrixPropertiesNV = CooperativeMatrixPropertiesNV
{
CooperativeMatrixPropertiesNV -> Word32
mSize :: Word32
,
CooperativeMatrixPropertiesNV -> Word32
nSize :: Word32
,
CooperativeMatrixPropertiesNV -> Word32
kSize :: Word32
,
CooperativeMatrixPropertiesNV -> ComponentTypeKHR
aType :: ComponentTypeNV
,
CooperativeMatrixPropertiesNV -> ComponentTypeKHR
bType :: ComponentTypeNV
,
CooperativeMatrixPropertiesNV -> ComponentTypeKHR
cType :: ComponentTypeNV
,
CooperativeMatrixPropertiesNV -> ComponentTypeKHR
dType :: ComponentTypeNV
,
CooperativeMatrixPropertiesNV -> ScopeKHR
scope :: ScopeNV
}
deriving (Typeable, CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool
(CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool)
-> (CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool)
-> Eq CooperativeMatrixPropertiesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool
== :: CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool
$c/= :: CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool
/= :: CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (CooperativeMatrixPropertiesNV)
#endif
deriving instance Show CooperativeMatrixPropertiesNV
instance ToCStruct CooperativeMatrixPropertiesNV where
withCStruct :: forall b.
CooperativeMatrixPropertiesNV
-> (Ptr CooperativeMatrixPropertiesNV -> IO b) -> IO b
withCStruct CooperativeMatrixPropertiesNV
x Ptr CooperativeMatrixPropertiesNV -> IO b
f = Int -> (Ptr CooperativeMatrixPropertiesNV -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
48 ((Ptr CooperativeMatrixPropertiesNV -> IO b) -> IO b)
-> (Ptr CooperativeMatrixPropertiesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr CooperativeMatrixPropertiesNV
p -> Ptr CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> IO b -> IO b
forall b.
Ptr CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr CooperativeMatrixPropertiesNV
p CooperativeMatrixPropertiesNV
x (Ptr CooperativeMatrixPropertiesNV -> IO b
f Ptr CooperativeMatrixPropertiesNV
p)
pokeCStruct :: forall b.
Ptr CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> IO b -> IO b
pokeCStruct Ptr CooperativeMatrixPropertiesNV
p CooperativeMatrixPropertiesNV{Word32
ComponentTypeKHR
ScopeKHR
$sel:mSize:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> Word32
$sel:nSize:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> Word32
$sel:kSize:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> Word32
$sel:aType:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> ComponentTypeKHR
$sel:bType:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> ComponentTypeKHR
$sel:cType:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> ComponentTypeKHR
$sel:dType:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> ComponentTypeKHR
$sel:scope:CooperativeMatrixPropertiesNV :: CooperativeMatrixPropertiesNV -> ScopeKHR
mSize :: Word32
nSize :: Word32
kSize :: Word32
aType :: ComponentTypeKHR
bType :: ComponentTypeKHR
cType :: ComponentTypeKHR
dType :: ComponentTypeKHR
scope :: ScopeKHR
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> 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 CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
mSize)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
nSize)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
kSize)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
aType)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
bType)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
cType)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
dType)
Ptr ScopeKHR -> ScopeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ScopeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ScopeNV)) (ScopeKHR
scope)
IO b
f
cStructSize :: Int
cStructSize = Int
48
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr CooperativeMatrixPropertiesNV -> IO b -> IO b
pokeZeroCStruct Ptr CooperativeMatrixPropertiesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> 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 CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
forall a. Zero a => a
zero)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
forall a. Zero a => a
zero)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
forall a. Zero a => a
zero)
Ptr ComponentTypeKHR -> ComponentTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr ComponentTypeNV)) (ComponentTypeKHR
forall a. Zero a => a
zero)
Ptr ScopeKHR -> ScopeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ScopeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ScopeNV)) (ScopeKHR
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct CooperativeMatrixPropertiesNV where
peekCStruct :: Ptr CooperativeMatrixPropertiesNV
-> IO CooperativeMatrixPropertiesNV
peekCStruct Ptr CooperativeMatrixPropertiesNV
p = do
Word32
mSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Word32
nSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
Word32
kSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
ComponentTypeKHR
aType <- forall a. Storable a => Ptr a -> IO a
peek @ComponentTypeNV ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ComponentTypeNV))
ComponentTypeKHR
bType <- forall a. Storable a => Ptr a -> IO a
peek @ComponentTypeNV ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr ComponentTypeNV))
ComponentTypeKHR
cType <- forall a. Storable a => Ptr a -> IO a
peek @ComponentTypeNV ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr ComponentTypeNV))
ComponentTypeKHR
dType <- forall a. Storable a => Ptr a -> IO a
peek @ComponentTypeNV ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ComponentTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr ComponentTypeNV))
ScopeKHR
scope <- forall a. Storable a => Ptr a -> IO a
peek @ScopeNV ((Ptr CooperativeMatrixPropertiesNV
p Ptr CooperativeMatrixPropertiesNV -> Int -> Ptr ScopeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ScopeNV))
CooperativeMatrixPropertiesNV -> IO CooperativeMatrixPropertiesNV
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CooperativeMatrixPropertiesNV -> IO CooperativeMatrixPropertiesNV)
-> CooperativeMatrixPropertiesNV
-> IO CooperativeMatrixPropertiesNV
forall a b. (a -> b) -> a -> b
$ Word32
-> Word32
-> Word32
-> ComponentTypeKHR
-> ComponentTypeKHR
-> ComponentTypeKHR
-> ComponentTypeKHR
-> ScopeKHR
-> CooperativeMatrixPropertiesNV
CooperativeMatrixPropertiesNV
Word32
mSize Word32
nSize Word32
kSize ComponentTypeKHR
aType ComponentTypeKHR
bType ComponentTypeKHR
cType ComponentTypeKHR
dType ScopeKHR
scope
instance Storable CooperativeMatrixPropertiesNV where
sizeOf :: CooperativeMatrixPropertiesNV -> Int
sizeOf ~CooperativeMatrixPropertiesNV
_ = Int
48
alignment :: CooperativeMatrixPropertiesNV -> Int
alignment ~CooperativeMatrixPropertiesNV
_ = Int
8
peek :: Ptr CooperativeMatrixPropertiesNV
-> IO CooperativeMatrixPropertiesNV
peek = Ptr CooperativeMatrixPropertiesNV
-> IO CooperativeMatrixPropertiesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> IO ()
poke Ptr CooperativeMatrixPropertiesNV
ptr CooperativeMatrixPropertiesNV
poked = Ptr CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> IO () -> IO ()
forall b.
Ptr CooperativeMatrixPropertiesNV
-> CooperativeMatrixPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr CooperativeMatrixPropertiesNV
ptr CooperativeMatrixPropertiesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero CooperativeMatrixPropertiesNV where
zero :: CooperativeMatrixPropertiesNV
zero = Word32
-> Word32
-> Word32
-> ComponentTypeKHR
-> ComponentTypeKHR
-> ComponentTypeKHR
-> ComponentTypeKHR
-> ScopeKHR
-> CooperativeMatrixPropertiesNV
CooperativeMatrixPropertiesNV
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
ComponentTypeKHR
forall a. Zero a => a
zero
ComponentTypeKHR
forall a. Zero a => a
zero
ComponentTypeKHR
forall a. Zero a => a
zero
ComponentTypeKHR
forall a. Zero a => a
zero
ScopeKHR
forall a. Zero a => a
zero
type ScopeNV = ScopeKHR
type ComponentTypeNV = ComponentTypeKHR
type NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1
pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION :: forall a . Integral a => a
pattern $bNV_COOPERATIVE_MATRIX_SPEC_VERSION :: forall a. Integral a => a
$mNV_COOPERATIVE_MATRIX_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1
type NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix"
pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bNV_COOPERATIVE_MATRIX_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mNV_COOPERATIVE_MATRIX_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix"