{-# language CPP #-}
-- | = Name
--
-- VK_VALVE_descriptor_set_host_mapping - device extension
--
-- == VK_VALVE_descriptor_set_host_mapping
--
-- [__Name String__]
--     @VK_VALVE_descriptor_set_host_mapping@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     421
--
-- [__Revision__]
--     1
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires support for Vulkan 1.0
--
-- [__Special Use__]
--
--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>
--
-- [__Contact__]
--
--     -   Hans-Kristian Arntzen
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_descriptor_set_host_mapping] @HansKristian-Work%0A*Here describe the issue or question you have about the VK_VALVE_descriptor_set_host_mapping extension* >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2022-02-22
--
-- [__IP Status__]
--     No known IP claims.
--
-- [__Contributors__]
--
--     -   Hans-Kristian Arntzen, Valve
--
-- == Description
--
-- This extension allows applications to directly query a host pointer for
-- a 'Vulkan.Core10.Handles.DescriptorSet' which /can/ be used to copy
-- descriptors between descriptor sets without the use of an API command.
-- Memory offsets and sizes for descriptors /can/ be queried from a
-- 'Vulkan.Core10.Handles.DescriptorSetLayout' as well.
--
-- Note
--
-- There is currently no specification language written for this extension.
-- The links to APIs defined by the extension are to stubs that only
-- include generated content such as API declarations and implicit valid
-- usage statements.
--
-- Note
--
-- This extension is only intended for use in specific embedded
-- environments with known implementation details, and is therefore
-- undocumented.
--
-- == New Commands
--
-- -   'getDescriptorSetHostMappingVALVE'
--
-- -   'getDescriptorSetLayoutHostMappingInfoVALVE'
--
-- == New Structures
--
-- -   'DescriptorSetBindingReferenceVALVE'
--
-- -   'DescriptorSetLayoutHostMappingInfoVALVE'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE'
--
-- == New Enum Constants
--
-- -   'VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME'
--
-- -   'VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'
--
-- == Stub API References
--
-- There is currently no specification language written for this command.
-- This section acts only as placeholder and to avoid dead links in the
-- specification and reference pages.
--
-- > // Provided by VK_VALVE_descriptor_set_host_mapping
-- > void vkGetDescriptorSetLayoutHostMappingInfoVALVE(
-- >     VkDevice                                    device,
-- >     const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
-- >     VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping);
--
-- === Valid Usage (Implicit)
--
-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter#
--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
--
-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter#
--     @pBindingReference@ /must/ be a valid pointer to a valid
--     'DescriptorSetBindingReferenceVALVE' structure
--
-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pHostMapping-parameter#
--     @pHostMapping@ /must/ be a valid pointer to a
--     'DescriptorSetLayoutHostMappingInfoVALVE' structure
--
-- There is currently no specification language written for this command.
-- This section acts only as placeholder and to avoid dead links in the
-- specification and reference pages.
--
-- > // Provided by VK_VALVE_descriptor_set_host_mapping
-- > void vkGetDescriptorSetHostMappingVALVE(
-- >     VkDevice                                    device,
-- >     VkDescriptorSet                             descriptorSet,
-- >     void**                                      ppData);
--
-- === Valid Usage (Implicit)
--
-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter# @device@
--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
--
-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter#
--     @descriptorSet@ /must/ be a valid
--     'Vulkan.Core10.Handles.DescriptorSet' handle
--
-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-ppData-parameter# @ppData@
--     /must/ be a valid pointer to a pointer value
--
-- There is currently no specification language written for this type. This
-- section acts only as placeholder and to avoid dead links in the
-- specification and reference pages.
--
-- > // Provided by VK_VALVE_descriptor_set_host_mapping
-- > typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
-- >     VkStructureType    sType;
-- >     void*              pNext;
-- >     VkBool32           descriptorSetHostMapping;
-- > } VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
--
-- === Valid Usage (Implicit)
--
-- -   #VUID-VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE-sType-sType#
--     @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'
--
-- There is currently no specification language written for this type. This
-- section acts only as placeholder and to avoid dead links in the
-- specification and reference pages.
--
-- > // Provided by VK_VALVE_descriptor_set_host_mapping
-- > typedef struct VkDescriptorSetBindingReferenceVALVE {
-- >     VkStructureType          sType;
-- >     const void*              pNext;
-- >     VkDescriptorSetLayout    descriptorSetLayout;
-- >     uint32_t                 binding;
-- > } VkDescriptorSetBindingReferenceVALVE;
--
-- === Valid Usage (Implicit)
--
-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-sType-sType# @sType@
--     /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE'
--
-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-pNext-pNext# @pNext@
--     /must/ be @NULL@
--
-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter#
--     @descriptorSetLayout@ /must/ be a valid
--     'Vulkan.Core10.Handles.DescriptorSetLayout' handle
--
-- There is currently no specification language written for this type. This
-- section acts only as placeholder and to avoid dead links in the
-- specification and reference pages.
--
-- > // Provided by VK_VALVE_descriptor_set_host_mapping
-- > typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE {
-- >     VkStructureType    sType;
-- >     void*              pNext;
-- >     size_t             descriptorOffset;
-- >     uint32_t           descriptorSize;
-- > } VkDescriptorSetLayoutHostMappingInfoVALVE;
--
-- === Valid Usage (Implicit)
--
-- -   #VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-sType-sType# @sType@
--     /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE'
--
-- -   #VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-pNext-pNext# @pNext@
--     /must/ be @NULL@
--
-- == Version History
--
-- -   Revision 1, 2022-02-22 (Hans-Kristian Arntzen)
--
--     -   Initial specification
--
-- == See Also
--
-- 'DescriptorSetBindingReferenceVALVE',
-- 'DescriptorSetLayoutHostMappingInfoVALVE',
-- 'PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
-- 'getDescriptorSetHostMappingVALVE',
-- 'getDescriptorSetLayoutHostMappingInfoVALVE'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping  ( getDescriptorSetLayoutHostMappingInfoVALVE
                                                               , getDescriptorSetHostMappingVALVE
                                                               , PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE(..)
                                                               , DescriptorSetBindingReferenceVALVE(..)
                                                               , DescriptorSetLayoutHostMappingInfoVALVE(..)
                                                               , VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION
                                                               , pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION
                                                               , VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME
                                                               , pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME
                                                               ) 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.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Data.Coerce (coerce)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
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.C.Types (CSize)
import Foreign.C.Types (CSize(..))
import Foreign.C.Types (CSize(CSize))
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.Word (Word64)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (DescriptorSet)
import Vulkan.Core10.Handles (DescriptorSet(..))
import Vulkan.Core10.Handles (DescriptorSetLayout)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetHostMappingVALVE))
import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetLayoutHostMappingInfoVALVE))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetDescriptorSetLayoutHostMappingInfoVALVE
  :: FunPtr (Ptr Device_T -> Ptr DescriptorSetBindingReferenceVALVE -> Ptr DescriptorSetLayoutHostMappingInfoVALVE -> IO ()) -> Ptr Device_T -> Ptr DescriptorSetBindingReferenceVALVE -> Ptr DescriptorSetLayoutHostMappingInfoVALVE -> IO ()

-- | vkGetDescriptorSetLayoutHostMappingInfoVALVE - Stub description of
-- vkGetDescriptorSetLayoutHostMappingInfoVALVE
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,
-- 'DescriptorSetBindingReferenceVALVE',
-- 'DescriptorSetLayoutHostMappingInfoVALVE',
-- 'Vulkan.Core10.Handles.Device'
getDescriptorSetLayoutHostMappingInfoVALVE :: forall io
                                            . (MonadIO io)
                                           => -- | #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter#
                                              -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                              Device
                                           -> -- | #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter#
                                              -- @pBindingReference@ /must/ be a valid pointer to a valid
                                              -- 'DescriptorSetBindingReferenceVALVE' structure
                                              DescriptorSetBindingReferenceVALVE
                                           -> io (DescriptorSetLayoutHostMappingInfoVALVE)
getDescriptorSetLayoutHostMappingInfoVALVE :: forall (io :: * -> *).
MonadIO io =>
Device
-> DescriptorSetBindingReferenceVALVE
-> io DescriptorSetLayoutHostMappingInfoVALVE
getDescriptorSetLayoutHostMappingInfoVALVE Device
device
                                             DescriptorSetBindingReferenceVALVE
bindingReference = IO DescriptorSetLayoutHostMappingInfoVALVE
-> io DescriptorSetLayoutHostMappingInfoVALVE
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO DescriptorSetLayoutHostMappingInfoVALVE
 -> io DescriptorSetLayoutHostMappingInfoVALVE)
-> (ContT
      DescriptorSetLayoutHostMappingInfoVALVE
      IO
      DescriptorSetLayoutHostMappingInfoVALVE
    -> IO DescriptorSetLayoutHostMappingInfoVALVE)
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     DescriptorSetLayoutHostMappingInfoVALVE
-> io DescriptorSetLayoutHostMappingInfoVALVE
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
  DescriptorSetLayoutHostMappingInfoVALVE
  IO
  DescriptorSetLayoutHostMappingInfoVALVE
-> IO DescriptorSetLayoutHostMappingInfoVALVE
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
   DescriptorSetLayoutHostMappingInfoVALVE
   IO
   DescriptorSetLayoutHostMappingInfoVALVE
 -> io DescriptorSetLayoutHostMappingInfoVALVE)
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     DescriptorSetLayoutHostMappingInfoVALVE
-> io DescriptorSetLayoutHostMappingInfoVALVE
forall a b. (a -> b) -> a -> b
$ do
  let vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr :: FunPtr
  (Ptr Device_T
   -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
   -> IO ())
vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
      -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
      -> IO ())
pVkGetDescriptorSetLayoutHostMappingInfoVALVE (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  IO () -> ContT DescriptorSetLayoutHostMappingInfoVALVE IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT DescriptorSetLayoutHostMappingInfoVALVE IO ())
-> IO () -> ContT DescriptorSetLayoutHostMappingInfoVALVE IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
   -> IO ())
vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr FunPtr
  (Ptr Device_T
   -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
   -> IO ())
-> FunPtr
     (Ptr Device_T
      -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
      -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
      -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr Device_T
   -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
   -> IO ())
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 vkGetDescriptorSetLayoutHostMappingInfoVALVE is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetDescriptorSetLayoutHostMappingInfoVALVE' :: Ptr Device_T
-> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO ()
vkGetDescriptorSetLayoutHostMappingInfoVALVE' = FunPtr
  (Ptr Device_T
   -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
   -> IO ())
-> Ptr Device_T
-> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO ()
mkVkGetDescriptorSetLayoutHostMappingInfoVALVE FunPtr
  (Ptr Device_T
   -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
   -> IO ())
vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr
  "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
pBindingReference <- ((("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
  -> IO DescriptorSetLayoutHostMappingInfoVALVE)
 -> IO DescriptorSetLayoutHostMappingInfoVALVE)
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
   -> IO DescriptorSetLayoutHostMappingInfoVALVE)
  -> IO DescriptorSetLayoutHostMappingInfoVALVE)
 -> ContT
      DescriptorSetLayoutHostMappingInfoVALVE
      IO
      ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE))
-> ((("pBindingReference"
      ::: Ptr DescriptorSetBindingReferenceVALVE)
     -> IO DescriptorSetLayoutHostMappingInfoVALVE)
    -> IO DescriptorSetLayoutHostMappingInfoVALVE)
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
forall a b. (a -> b) -> a -> b
$ DescriptorSetBindingReferenceVALVE
-> (("pBindingReference"
     ::: Ptr DescriptorSetBindingReferenceVALVE)
    -> IO DescriptorSetLayoutHostMappingInfoVALVE)
-> IO DescriptorSetLayoutHostMappingInfoVALVE
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (DescriptorSetBindingReferenceVALVE
bindingReference)
  "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
pPHostMapping <- ((("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
  -> IO DescriptorSetLayoutHostMappingInfoVALVE)
 -> IO DescriptorSetLayoutHostMappingInfoVALVE)
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @DescriptorSetLayoutHostMappingInfoVALVE)
  IO () -> ContT DescriptorSetLayoutHostMappingInfoVALVE IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT DescriptorSetLayoutHostMappingInfoVALVE IO ())
-> IO () -> ContT DescriptorSetLayoutHostMappingInfoVALVE IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetDescriptorSetLayoutHostMappingInfoVALVE" (Ptr Device_T
-> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO ()
vkGetDescriptorSetLayoutHostMappingInfoVALVE'
                                                                            (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                                            "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
pBindingReference
                                                                            ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
pPHostMapping))
  DescriptorSetLayoutHostMappingInfoVALVE
pHostMapping <- IO DescriptorSetLayoutHostMappingInfoVALVE
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     DescriptorSetLayoutHostMappingInfoVALVE
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO DescriptorSetLayoutHostMappingInfoVALVE
 -> ContT
      DescriptorSetLayoutHostMappingInfoVALVE
      IO
      DescriptorSetLayoutHostMappingInfoVALVE)
-> IO DescriptorSetLayoutHostMappingInfoVALVE
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     DescriptorSetLayoutHostMappingInfoVALVE
forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @DescriptorSetLayoutHostMappingInfoVALVE "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
pPHostMapping
  DescriptorSetLayoutHostMappingInfoVALVE
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     DescriptorSetLayoutHostMappingInfoVALVE
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DescriptorSetLayoutHostMappingInfoVALVE
 -> ContT
      DescriptorSetLayoutHostMappingInfoVALVE
      IO
      DescriptorSetLayoutHostMappingInfoVALVE)
-> DescriptorSetLayoutHostMappingInfoVALVE
-> ContT
     DescriptorSetLayoutHostMappingInfoVALVE
     IO
     DescriptorSetLayoutHostMappingInfoVALVE
forall a b. (a -> b) -> a -> b
$ (DescriptorSetLayoutHostMappingInfoVALVE
pHostMapping)


foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetDescriptorSetHostMappingVALVE
  :: FunPtr (Ptr Device_T -> DescriptorSet -> Ptr (Ptr ()) -> IO ()) -> Ptr Device_T -> DescriptorSet -> Ptr (Ptr ()) -> IO ()

-- | vkGetDescriptorSetHostMappingVALVE - Stub description of
-- vkGetDescriptorSetHostMappingVALVE
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,
-- 'Vulkan.Core10.Handles.DescriptorSet', 'Vulkan.Core10.Handles.Device'
getDescriptorSetHostMappingVALVE :: forall io
                                  . (MonadIO io)
                                 => -- | #VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter# @device@
                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                    Device
                                 -> -- | #VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter#
                                    -- @descriptorSet@ /must/ be a valid 'Vulkan.Core10.Handles.DescriptorSet'
                                    -- handle
                                    DescriptorSet
                                 -> io (("data" ::: Ptr ()))
getDescriptorSetHostMappingVALVE :: forall (io :: * -> *).
MonadIO io =>
Device -> DescriptorSet -> io ("data" ::: Ptr ())
getDescriptorSetHostMappingVALVE Device
device DescriptorSet
descriptorSet = IO ("data" ::: Ptr ()) -> io ("data" ::: Ptr ())
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ("data" ::: Ptr ()) -> io ("data" ::: Ptr ()))
-> (ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
    -> IO ("data" ::: Ptr ()))
-> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
-> io ("data" ::: Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
-> IO ("data" ::: Ptr ())
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
 -> io ("data" ::: Ptr ()))
-> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
-> io ("data" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ do
  let vkGetDescriptorSetHostMappingVALVEPtr :: FunPtr
  (Ptr Device_T
   -> DescriptorSet
   -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ())
vkGetDescriptorSetHostMappingVALVEPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> DescriptorSet
      -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
      -> IO ())
pVkGetDescriptorSetHostMappingVALVE (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  IO () -> ContT ("data" ::: Ptr ()) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("data" ::: Ptr ()) IO ())
-> IO () -> ContT ("data" ::: Ptr ()) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> DescriptorSet
   -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ())
vkGetDescriptorSetHostMappingVALVEPtr FunPtr
  (Ptr Device_T
   -> DescriptorSet
   -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ())
-> FunPtr
     (Ptr Device_T
      -> DescriptorSet
      -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
      -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr Device_T
   -> DescriptorSet
   -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ())
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 vkGetDescriptorSetHostMappingVALVE is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetDescriptorSetHostMappingVALVE' :: Ptr Device_T
-> DescriptorSet -> ("ppData" ::: Ptr ("data" ::: Ptr ())) -> IO ()
vkGetDescriptorSetHostMappingVALVE' = FunPtr
  (Ptr Device_T
   -> DescriptorSet
   -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ())
-> Ptr Device_T
-> DescriptorSet
-> ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> IO ()
mkVkGetDescriptorSetHostMappingVALVE FunPtr
  (Ptr Device_T
   -> DescriptorSet
   -> ("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ())
vkGetDescriptorSetHostMappingVALVEPtr
  "ppData" ::: Ptr ("data" ::: Ptr ())
pPpData <- ((("ppData" ::: Ptr ("data" ::: Ptr ())) -> IO ("data" ::: Ptr ()))
 -> IO ("data" ::: Ptr ()))
-> ContT
     ("data" ::: Ptr ()) IO ("ppData" ::: Ptr ("data" ::: Ptr ()))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("ppData" ::: Ptr ("data" ::: Ptr ()))
   -> IO ("data" ::: Ptr ()))
  -> IO ("data" ::: Ptr ()))
 -> ContT
      ("data" ::: Ptr ()) IO ("ppData" ::: Ptr ("data" ::: Ptr ())))
-> ((("ppData" ::: Ptr ("data" ::: Ptr ()))
     -> IO ("data" ::: Ptr ()))
    -> IO ("data" ::: Ptr ()))
-> ContT
     ("data" ::: Ptr ()) IO ("ppData" ::: Ptr ("data" ::: Ptr ()))
forall a b. (a -> b) -> a -> b
$ IO ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> (("ppData" ::: Ptr ("data" ::: Ptr ())) -> IO ())
-> (("ppData" ::: Ptr ("data" ::: Ptr ()))
    -> IO ("data" ::: Ptr ()))
-> IO ("data" ::: Ptr ())
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @(Ptr ()) Int
8) ("ppData" ::: Ptr ("data" ::: Ptr ())) -> IO ()
forall a. Ptr a -> IO ()
free
  IO () -> ContT ("data" ::: Ptr ()) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("data" ::: Ptr ()) IO ())
-> IO () -> ContT ("data" ::: Ptr ()) IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetDescriptorSetHostMappingVALVE" (Ptr Device_T
-> DescriptorSet -> ("ppData" ::: Ptr ("data" ::: Ptr ())) -> IO ()
vkGetDescriptorSetHostMappingVALVE'
                                                                  (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                                  (DescriptorSet
descriptorSet)
                                                                  ("ppData" ::: Ptr ("data" ::: Ptr ())
pPpData))
  "data" ::: Ptr ()
ppData <- IO ("data" ::: Ptr ())
-> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("data" ::: Ptr ())
 -> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ()))
-> IO ("data" ::: Ptr ())
-> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) "ppData" ::: Ptr ("data" ::: Ptr ())
pPpData
  ("data" ::: Ptr ())
-> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("data" ::: Ptr ())
 -> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ()))
-> ("data" ::: Ptr ())
-> ContT ("data" ::: Ptr ()) IO ("data" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ ("data" ::: Ptr ()
ppData)


-- | VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - Stub description
-- of VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
  { -- No documentation found for Nested "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE" "descriptorSetHostMapping"
    PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
descriptorSetHostMapping :: Bool }
  deriving (Typeable, PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
(PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
 -> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool)
-> (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
    -> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool)
-> Eq PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
$c/= :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
== :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
$c== :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
#endif
deriving instance Show PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE

instance ToCStruct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where
  withCStruct :: forall b.
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> (Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
    -> IO b)
-> IO b
withCStruct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
x Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> IO b
f = Int
-> (Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> IO b)
 -> IO b)
-> (Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p -> Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
x (Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> IO b
f Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE{Bool
descriptorSetHostMapping :: Bool
$sel:descriptorSetHostMapping:PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE)
    ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> Int -> "ppData" ::: Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorSetHostMapping))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE)
    ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> Int -> "ppData" ::: Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> 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 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where
  peekCStruct :: Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
peekCStruct Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p = do
    Bool32
descriptorSetHostMapping <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
p Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
 -> IO PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorSetHostMapping)

instance Storable PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where
  sizeOf :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Int
sizeOf ~PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
_ = Int
24
  alignment :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> Int
alignment ~PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
_ = Int
8
  peek :: Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
peek = Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE -> IO ()
poke Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
poked = Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
ptr PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where
  zero :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
zero = Bool -> PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
           Bool
forall a. Zero a => a
zero


-- | VkDescriptorSetBindingReferenceVALVE - Stub description of
-- VkDescriptorSetBindingReferenceVALVE
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,
-- 'Vulkan.Core10.Handles.DescriptorSetLayout',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'getDescriptorSetLayoutHostMappingInfoVALVE'
data DescriptorSetBindingReferenceVALVE = DescriptorSetBindingReferenceVALVE
  { -- | #VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter#
    -- @descriptorSetLayout@ /must/ be a valid
    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' handle
    DescriptorSetBindingReferenceVALVE -> DescriptorSetLayout
descriptorSetLayout :: DescriptorSetLayout
  , -- No documentation found for Nested "VkDescriptorSetBindingReferenceVALVE" "binding"
    DescriptorSetBindingReferenceVALVE -> Word32
binding :: Word32
  }
  deriving (Typeable, DescriptorSetBindingReferenceVALVE
-> DescriptorSetBindingReferenceVALVE -> Bool
(DescriptorSetBindingReferenceVALVE
 -> DescriptorSetBindingReferenceVALVE -> Bool)
-> (DescriptorSetBindingReferenceVALVE
    -> DescriptorSetBindingReferenceVALVE -> Bool)
-> Eq DescriptorSetBindingReferenceVALVE
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescriptorSetBindingReferenceVALVE
-> DescriptorSetBindingReferenceVALVE -> Bool
$c/= :: DescriptorSetBindingReferenceVALVE
-> DescriptorSetBindingReferenceVALVE -> Bool
== :: DescriptorSetBindingReferenceVALVE
-> DescriptorSetBindingReferenceVALVE -> Bool
$c== :: DescriptorSetBindingReferenceVALVE
-> DescriptorSetBindingReferenceVALVE -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DescriptorSetBindingReferenceVALVE)
#endif
deriving instance Show DescriptorSetBindingReferenceVALVE

instance ToCStruct DescriptorSetBindingReferenceVALVE where
  withCStruct :: forall b.
DescriptorSetBindingReferenceVALVE
-> (("pBindingReference"
     ::: Ptr DescriptorSetBindingReferenceVALVE)
    -> IO b)
-> IO b
withCStruct DescriptorSetBindingReferenceVALVE
x ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> IO b
f = Int
-> (("pBindingReference"
     ::: Ptr DescriptorSetBindingReferenceVALVE)
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
  -> IO b)
 -> IO b)
-> (("pBindingReference"
     ::: Ptr DescriptorSetBindingReferenceVALVE)
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \"pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> DescriptorSetBindingReferenceVALVE -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p DescriptorSetBindingReferenceVALVE
x (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> IO b
f "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p)
  pokeCStruct :: forall b.
("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> DescriptorSetBindingReferenceVALVE -> IO b -> IO b
pokeCStruct "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p DescriptorSetBindingReferenceVALVE{Word32
DescriptorSetLayout
binding :: Word32
descriptorSetLayout :: DescriptorSetLayout
$sel:binding:DescriptorSetBindingReferenceVALVE :: DescriptorSetBindingReferenceVALVE -> Word32
$sel:descriptorSetLayout:DescriptorSetBindingReferenceVALVE :: DescriptorSetBindingReferenceVALVE -> DescriptorSetLayout
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE)
    ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> "ppData" ::: Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
    Ptr DescriptorSetLayout -> DescriptorSetLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr DescriptorSetLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DescriptorSetLayout)) (DescriptorSetLayout
descriptorSetLayout)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
binding)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> IO b -> IO b
pokeZeroCStruct "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE)
    ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> "ppData" ::: Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
    Ptr DescriptorSetLayout -> DescriptorSetLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr DescriptorSetLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DescriptorSetLayout)) (DescriptorSetLayout
forall a. Zero a => a
zero)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct DescriptorSetBindingReferenceVALVE where
  peekCStruct :: ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> IO DescriptorSetBindingReferenceVALVE
peekCStruct "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p = do
    DescriptorSetLayout
descriptorSetLayout <- forall a. Storable a => Ptr a -> IO a
peek @DescriptorSetLayout (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr DescriptorSetLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DescriptorSetLayout))
    Word32
binding <- forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
p ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
    DescriptorSetBindingReferenceVALVE
-> IO DescriptorSetBindingReferenceVALVE
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DescriptorSetBindingReferenceVALVE
 -> IO DescriptorSetBindingReferenceVALVE)
-> DescriptorSetBindingReferenceVALVE
-> IO DescriptorSetBindingReferenceVALVE
forall a b. (a -> b) -> a -> b
$ DescriptorSetLayout -> Word32 -> DescriptorSetBindingReferenceVALVE
DescriptorSetBindingReferenceVALVE
             DescriptorSetLayout
descriptorSetLayout Word32
binding

instance Storable DescriptorSetBindingReferenceVALVE where
  sizeOf :: DescriptorSetBindingReferenceVALVE -> Int
sizeOf ~DescriptorSetBindingReferenceVALVE
_ = Int
32
  alignment :: DescriptorSetBindingReferenceVALVE -> Int
alignment ~DescriptorSetBindingReferenceVALVE
_ = Int
8
  peek :: ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> IO DescriptorSetBindingReferenceVALVE
peek = ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> IO DescriptorSetBindingReferenceVALVE
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> DescriptorSetBindingReferenceVALVE -> IO ()
poke "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
ptr DescriptorSetBindingReferenceVALVE
poked = ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE)
-> DescriptorSetBindingReferenceVALVE -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE
ptr DescriptorSetBindingReferenceVALVE
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero DescriptorSetBindingReferenceVALVE where
  zero :: DescriptorSetBindingReferenceVALVE
zero = DescriptorSetLayout -> Word32 -> DescriptorSetBindingReferenceVALVE
DescriptorSetBindingReferenceVALVE
           DescriptorSetLayout
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero


-- | VkDescriptorSetLayoutHostMappingInfoVALVE - Stub description of
-- VkDescriptorSetLayoutHostMappingInfoVALVE
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'getDescriptorSetLayoutHostMappingInfoVALVE'
data DescriptorSetLayoutHostMappingInfoVALVE = DescriptorSetLayoutHostMappingInfoVALVE
  { -- No documentation found for Nested "VkDescriptorSetLayoutHostMappingInfoVALVE" "descriptorOffset"
    DescriptorSetLayoutHostMappingInfoVALVE -> Word64
descriptorOffset :: Word64
  , -- No documentation found for Nested "VkDescriptorSetLayoutHostMappingInfoVALVE" "descriptorSize"
    DescriptorSetLayoutHostMappingInfoVALVE -> Word32
descriptorSize :: Word32
  }
  deriving (Typeable, DescriptorSetLayoutHostMappingInfoVALVE
-> DescriptorSetLayoutHostMappingInfoVALVE -> Bool
(DescriptorSetLayoutHostMappingInfoVALVE
 -> DescriptorSetLayoutHostMappingInfoVALVE -> Bool)
-> (DescriptorSetLayoutHostMappingInfoVALVE
    -> DescriptorSetLayoutHostMappingInfoVALVE -> Bool)
-> Eq DescriptorSetLayoutHostMappingInfoVALVE
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescriptorSetLayoutHostMappingInfoVALVE
-> DescriptorSetLayoutHostMappingInfoVALVE -> Bool
$c/= :: DescriptorSetLayoutHostMappingInfoVALVE
-> DescriptorSetLayoutHostMappingInfoVALVE -> Bool
== :: DescriptorSetLayoutHostMappingInfoVALVE
-> DescriptorSetLayoutHostMappingInfoVALVE -> Bool
$c== :: DescriptorSetLayoutHostMappingInfoVALVE
-> DescriptorSetLayoutHostMappingInfoVALVE -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DescriptorSetLayoutHostMappingInfoVALVE)
#endif
deriving instance Show DescriptorSetLayoutHostMappingInfoVALVE

instance ToCStruct DescriptorSetLayoutHostMappingInfoVALVE where
  withCStruct :: forall b.
DescriptorSetLayoutHostMappingInfoVALVE
-> (("pHostMapping"
     ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
    -> IO b)
-> IO b
withCStruct DescriptorSetLayoutHostMappingInfoVALVE
x ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO b
f = Int
-> (("pHostMapping"
     ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
  -> IO b)
 -> IO b)
-> (("pHostMapping"
     ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \"pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> DescriptorSetLayoutHostMappingInfoVALVE -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p DescriptorSetLayoutHostMappingInfoVALVE
x (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO b
f "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p)
  pokeCStruct :: forall b.
("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> DescriptorSetLayoutHostMappingInfoVALVE -> IO b -> IO b
pokeCStruct "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p DescriptorSetLayoutHostMappingInfoVALVE{Word32
Word64
descriptorSize :: Word32
descriptorOffset :: Word64
$sel:descriptorSize:DescriptorSetLayoutHostMappingInfoVALVE :: DescriptorSetLayoutHostMappingInfoVALVE -> Word32
$sel:descriptorOffset:DescriptorSetLayoutHostMappingInfoVALVE :: DescriptorSetLayoutHostMappingInfoVALVE -> Word64
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE)
    ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> "ppData" ::: Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
    Ptr CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
descriptorOffset))
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
descriptorSize)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO b -> IO b
pokeZeroCStruct "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE)
    ("ppData" ::: Ptr ("data" ::: Ptr ()))
-> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> "ppData" ::: Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
    Ptr CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
forall a. Zero a => a
zero))
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct DescriptorSetLayoutHostMappingInfoVALVE where
  peekCStruct :: ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO DescriptorSetLayoutHostMappingInfoVALVE
peekCStruct "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p = do
    CSize
descriptorOffset <- forall a. Storable a => Ptr a -> IO a
peek @CSize (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CSize))
    Word32
descriptorSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
p ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
    DescriptorSetLayoutHostMappingInfoVALVE
-> IO DescriptorSetLayoutHostMappingInfoVALVE
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DescriptorSetLayoutHostMappingInfoVALVE
 -> IO DescriptorSetLayoutHostMappingInfoVALVE)
-> DescriptorSetLayoutHostMappingInfoVALVE
-> IO DescriptorSetLayoutHostMappingInfoVALVE
forall a b. (a -> b) -> a -> b
$ Word64 -> Word32 -> DescriptorSetLayoutHostMappingInfoVALVE
DescriptorSetLayoutHostMappingInfoVALVE
             (forall a b. Coercible a b => a -> b
coerce @CSize @Word64 CSize
descriptorOffset) Word32
descriptorSize

instance Storable DescriptorSetLayoutHostMappingInfoVALVE where
  sizeOf :: DescriptorSetLayoutHostMappingInfoVALVE -> Int
sizeOf ~DescriptorSetLayoutHostMappingInfoVALVE
_ = Int
32
  alignment :: DescriptorSetLayoutHostMappingInfoVALVE -> Int
alignment ~DescriptorSetLayoutHostMappingInfoVALVE
_ = Int
8
  peek :: ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO DescriptorSetLayoutHostMappingInfoVALVE
peek = ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> IO DescriptorSetLayoutHostMappingInfoVALVE
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> DescriptorSetLayoutHostMappingInfoVALVE -> IO ()
poke "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
ptr DescriptorSetLayoutHostMappingInfoVALVE
poked = ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE)
-> DescriptorSetLayoutHostMappingInfoVALVE -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE
ptr DescriptorSetLayoutHostMappingInfoVALVE
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero DescriptorSetLayoutHostMappingInfoVALVE where
  zero :: DescriptorSetLayoutHostMappingInfoVALVE
zero = Word64 -> Word32 -> DescriptorSetLayoutHostMappingInfoVALVE
DescriptorSetLayoutHostMappingInfoVALVE
           Word64
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero


type VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION"
pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION :: forall a . Integral a => a
pattern $bVALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION :: forall a. Integral a => a
$mVALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> (Void# -> r) -> (Void# -> r) -> r
VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1


type VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME = "VK_VALVE_descriptor_set_host_mapping"

-- No documentation found for TopLevel "VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME"
pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bVALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mVALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME = "VK_VALVE_descriptor_set_host_mapping"