vulkan-2.1.0.0: src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
{-# language Strict #-}
{-# language CPP #-}
{-# language PatternSynonyms #-}
{-# language OverloadedStrings #-}
{-# language DuplicateRecordFields #-}
module Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex
( pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
, pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION
, pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
, VkWin32KeyedMutexAcquireReleaseInfoKHR(..)
) where
import Data.String
( IsString
)
import Data.Word
( Word32
, Word64
)
import Foreign.Ptr
( Ptr
, plusPtr
)
import Foreign.Storable
( Storable
, Storable(..)
)
import Graphics.Vulkan.Core10.Core
( VkStructureType(..)
)
import Graphics.Vulkan.Core10.Memory
( VkDeviceMemory
)
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"
pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR :: VkStructureType
pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = VkStructureType 1000075000
-- No documentation found for TopLevel "VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"
pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION :: Integral a => a
pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1
-- No documentation found for TopLevel "VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"
pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME :: (Eq a ,IsString a) => a
pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex"
-- | VkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex
-- mechanism to synchronize work
--
-- == Valid Usage
--
-- - Each member of @pAcquireSyncs@ and @pReleaseSyncs@ /must/ be a
-- device memory object imported by setting
-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR'::@handleType@
-- to @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@ or
-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR@
--
-- - If @acquireCount@ is not @0@, @pAcquireSyncs@ /must/ be a valid
-- pointer to an array of @acquireCount@ valid @VkDeviceMemory@ handles
--
-- - If @acquireCount@ is not @0@, @pAcquireKeys@ /must/ be a valid
-- pointer to an array of @acquireCount@ @uint64_t@ values
--
-- - If @acquireCount@ is not @0@, @pAcquireTimeouts@ /must/ be a valid
-- pointer to an array of @acquireCount@ @uint32_t@ values
--
-- - If @releaseCount@ is not @0@, @pReleaseSyncs@ /must/ be a valid
-- pointer to an array of @releaseCount@ valid @VkDeviceMemory@ handles
--
-- - If @releaseCount@ is not @0@, @pReleaseKeys@ /must/ be a valid
-- pointer to an array of @releaseCount@ @uint64_t@ values
--
-- - Both of the elements of @pAcquireSyncs@, and the elements of
-- @pReleaseSyncs@ that are valid handles /must/ have been created,
-- allocated, or retrieved from the same @VkDevice@
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkWin32KeyedMutexAcquireReleaseInfoKHR = VkWin32KeyedMutexAcquireReleaseInfoKHR
{ -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "sType"
vkSType :: VkStructureType
, -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pNext"
vkPNext :: Ptr ()
, -- | @acquireCount@ is the number of entries in the @pAcquireSyncs@,
-- @pAcquireKeys@, and @pAcquireTimeoutMilliseconds@ arrays.
vkAcquireCount :: Word32
, -- | @pAcquireSyncs@ is a pointer to an array of
-- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were
-- imported from Direct3D 11 resources.
vkPAcquireSyncs :: Ptr VkDeviceMemory
, -- | @pAcquireKeys@ is a pointer to an array of mutex key values to wait for
-- prior to beginning the submitted work. Entries refer to the keyed mutex
-- associated with the corresponding entries in @pAcquireSyncs@.
vkPAcquireKeys :: Ptr Word64
, -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pAcquireTimeouts"
vkPAcquireTimeouts :: Ptr Word32
, -- | @releaseCount@ is the number of entries in the @pReleaseSyncs@ and
-- @pReleaseKeys@ arrays.
vkReleaseCount :: Word32
, -- | @pReleaseSyncs@ is a pointer to an array of
-- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were
-- imported from Direct3D 11 resources.
vkPReleaseSyncs :: Ptr VkDeviceMemory
, -- | @pReleaseKeys@ is a pointer to an array of mutex key values to set when
-- the submitted work has completed. Entries refer to the keyed mutex
-- associated with the corresponding entries in @pReleaseSyncs@.
vkPReleaseKeys :: Ptr Word64
}
deriving (Eq, Show)
instance Storable VkWin32KeyedMutexAcquireReleaseInfoKHR where
sizeOf ~_ = 72
alignment ~_ = 8
peek ptr = VkWin32KeyedMutexAcquireReleaseInfoKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 48)
<*> peek (ptr `plusPtr` 56)
<*> peek (ptr `plusPtr` 64)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 16) (vkAcquireCount (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 24) (vkPAcquireSyncs (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 32) (vkPAcquireKeys (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 40) (vkPAcquireTimeouts (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 48) (vkReleaseCount (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 56) (vkPReleaseSyncs (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))
*> poke (ptr `plusPtr` 64) (vkPReleaseKeys (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))