vulkan-2.0.0.0: Bindings to the Vulkan graphics API.

Safe HaskellNone
LanguageHaskell2010

Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities

Synopsis

Documentation

newtype VkExternalSemaphoreHandleTypeFlagBits Source #

VkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external semaphore handle types

Description

  • VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must be compatible with the POSIX system calls dup, dup2, close, and the non-standard system call dup3. Additionally, it must be transportable over a socket using an SCM_RIGHTS control message. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object.
  • VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must be compatible with the functions DuplicateHandle, CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformation. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object.
  • VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying synchronization primitive represented its Vulkan semaphore object, and will therefore become invalid when all Vulkan semaphore objects associated with it are destroyed.
  • VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT specifies an NT handle returned by ID3D12Device::CreateSharedHandle referring to a Direct3D 12 fence. It owns a reference to the underlying synchronization primitive associated with the Direct3D fence.
  • VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT specifies a POSIX file descriptor handle to a Linux Sync File or Android Fence object. It can be used with any native API accepting a valid sync file or fence as input. It owns a reference to the underlying synchronization primitive associated with the file descriptor. Implementations which support importing this handle type must accept any type of sync or fence FD supported by the native system they are running on.

Note

Handles of type VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT generated by the implementation may represent either Linux Sync Files or Android Fences at the implementation’s discretion. Applications should only use operations defined for both types of file descriptors, unless they know via means external to Vulkan the type of the file descriptor, or are prepared to deal with the system-defined operation failures resulting from using the wrong type.

Some external semaphore handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table:

+----------------------+----------------------+-----------------------+
| Handle type          | @VkPhysicalDeviceIDP | @VkPhysicalDeviceIDPr |
|                      | roperties@::@driverU | operties@::@deviceUUI |
|                      | UID@                 | D@                    |
+----------------------+----------------------+-----------------------+
| @VK_EXTERNAL_SEMAPHO | Must match           | Must match            |
| RE_HANDLE_TYPE_OPAQU |                      |                       |
| E_FD_BIT@            |                      |                       |
+----------------------+----------------------+-----------------------+
| @VK_EXTERNAL_SEMAPHO | Must match           | Must match            |
| RE_HANDLE_TYPE_OPAQU |                      |                       |
| E_WIN32_BIT@         |                      |                       |
+----------------------+----------------------+-----------------------+
| @VK_EXTERNAL_SEMAPHO | Must match           | Must match            |
| RE_HANDLE_TYPE_OPAQU |                      |                       |
| E_WIN32_KMT_BIT@     |                      |                       |
+----------------------+----------------------+-----------------------+
| @VK_EXTERNAL_SEMAPHO | Must match           | Must match            |
| RE_HANDLE_TYPE_D3D12 |                      |                       |
| _FENCE_BIT@          |                      |                       |
+----------------------+----------------------+-----------------------+
| @VK_EXTERNAL_SEMAPHO | No restriction       | No restriction        |
| RE_HANDLE_TYPE_SYNC_ |                      |                       |
| FD_BIT@              |                      |                       |
+----------------------+----------------------+-----------------------+

External semaphore handle types compatibility

See Also

VkExternalSemaphoreHandleTypeFlags, VkImportSemaphoreFdInfoKHR, VkImportSemaphoreWin32HandleInfoKHR, VkPhysicalDeviceExternalSemaphoreInfo, VkSemaphoreGetFdInfoKHR, VkSemaphoreGetWin32HandleInfoKHR

Instances

Eq VkExternalSemaphoreHandleTypeFlagBits Source # 
Ord VkExternalSemaphoreHandleTypeFlagBits Source # 
Read VkExternalSemaphoreHandleTypeFlagBits Source # 
Show VkExternalSemaphoreHandleTypeFlagBits Source # 
Storable VkExternalSemaphoreHandleTypeFlagBits Source # 
Bits VkExternalSemaphoreHandleTypeFlagBits Source # 

Methods

(.&.) :: VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits #

(.|.) :: VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits #

xor :: VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits #

complement :: VkExternalSemaphoreHandleTypeFlagBits -> VkExternalSemaphoreHandleTypeFlagBits #

shift :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

rotate :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

zeroBits :: VkExternalSemaphoreHandleTypeFlagBits #

bit :: Int -> VkExternalSemaphoreHandleTypeFlagBits #

setBit :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

clearBit :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

complementBit :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

testBit :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> Bool #

bitSizeMaybe :: VkExternalSemaphoreHandleTypeFlagBits -> Maybe Int #

bitSize :: VkExternalSemaphoreHandleTypeFlagBits -> Int #

isSigned :: VkExternalSemaphoreHandleTypeFlagBits -> Bool #

shiftL :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

unsafeShiftL :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

shiftR :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

unsafeShiftR :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

rotateL :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

rotateR :: VkExternalSemaphoreHandleTypeFlagBits -> Int -> VkExternalSemaphoreHandleTypeFlagBits #

popCount :: VkExternalSemaphoreHandleTypeFlagBits -> Int #

FiniteBits VkExternalSemaphoreHandleTypeFlagBits Source # 

newtype VkExternalSemaphoreFeatureFlagBits Source #

VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an external semaphore handle type

See Also

VkExternalSemaphoreFeatureFlags

Instances

Eq VkExternalSemaphoreFeatureFlagBits Source # 
Ord VkExternalSemaphoreFeatureFlagBits Source # 
Read VkExternalSemaphoreFeatureFlagBits Source # 
Show VkExternalSemaphoreFeatureFlagBits Source # 
Storable VkExternalSemaphoreFeatureFlagBits Source # 
Bits VkExternalSemaphoreFeatureFlagBits Source # 

Methods

(.&.) :: VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits #

(.|.) :: VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits #

xor :: VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits #

complement :: VkExternalSemaphoreFeatureFlagBits -> VkExternalSemaphoreFeatureFlagBits #

shift :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

rotate :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

zeroBits :: VkExternalSemaphoreFeatureFlagBits #

bit :: Int -> VkExternalSemaphoreFeatureFlagBits #

setBit :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

clearBit :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

complementBit :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

testBit :: VkExternalSemaphoreFeatureFlagBits -> Int -> Bool #

bitSizeMaybe :: VkExternalSemaphoreFeatureFlagBits -> Maybe Int #

bitSize :: VkExternalSemaphoreFeatureFlagBits -> Int #

isSigned :: VkExternalSemaphoreFeatureFlagBits -> Bool #

shiftL :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

unsafeShiftL :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

shiftR :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

unsafeShiftR :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

rotateL :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

rotateR :: VkExternalSemaphoreFeatureFlagBits -> Int -> VkExternalSemaphoreFeatureFlagBits #

popCount :: VkExternalSemaphoreFeatureFlagBits -> Int #

FiniteBits VkExternalSemaphoreFeatureFlagBits Source # 

pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT :: VkExternalSemaphoreFeatureFlagBits Source #

VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT specifies that handles of this type can be exported from Vulkan semaphore objects.

pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT :: VkExternalSemaphoreFeatureFlagBits Source #

VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT specifies that handles of this type can be imported as Vulkan semaphore objects.

vkGetPhysicalDeviceExternalSemaphoreProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO () Source #

vkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying external semaphore handle capabilities.

Parameters

  • physicalDevice is the physical device from which to query the semaphore capabilities.

Description

Valid Usage (Implicit)

  • physicalDevice must be a valid VkPhysicalDevice handle
  • pExternalSemaphoreInfo must be a valid pointer to a valid VkPhysicalDeviceExternalSemaphoreInfo structure
  • pExternalSemaphoreProperties must be a valid pointer to a VkExternalSemaphoreProperties structure

See Also

VkExternalSemaphoreProperties, VkPhysicalDevice, VkPhysicalDeviceExternalSemaphoreInfo

data VkPhysicalDeviceExternalSemaphoreInfo Source #

VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore creation parameters.

Description

Valid Usage (Implicit)

  • sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO

See Also

VkExternalSemaphoreHandleTypeFlagBits, VkStructureType, vkGetPhysicalDeviceExternalSemaphoreProperties, vkGetPhysicalDeviceExternalSemaphorePropertiesKHR

Constructors

VkPhysicalDeviceExternalSemaphoreInfo 

Fields

data VkExternalSemaphoreProperties Source #

VkExternalSemaphoreProperties - Structure describing supported external semaphore handle features

Description

If handleType is not supported by the implementation, then VkExternalSemaphoreProperties::externalSemaphoreFeatures will be set to zero.

Valid Usage (Implicit)

  • sType must be VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
  • pNext must be NULL

See Also

VkExternalSemaphoreFeatureFlags, VkExternalSemaphoreHandleTypeFlags, VkStructureType, vkGetPhysicalDeviceExternalSemaphoreProperties, vkGetPhysicalDeviceExternalSemaphorePropertiesKHR

Constructors

VkExternalSemaphoreProperties 

Fields

type VkExternalSemaphoreHandleTypeFlags = VkExternalSemaphoreHandleTypeFlagBits Source #

VkExternalSemaphoreHandleTypeFlags - Bitmask of VkExternalSemaphoreHandleTypeFlagBits

Description

VkExternalSemaphoreHandleTypeFlags is a bitmask type for setting a mask of zero or more VkExternalSemaphoreHandleTypeFlagBits.

See Also

VkExportSemaphoreCreateInfo, VkExternalSemaphoreHandleTypeFlagBits, VkExternalSemaphoreProperties

type VkExternalSemaphoreFeatureFlags = VkExternalSemaphoreFeatureFlagBits Source #

VkExternalSemaphoreFeatureFlags - Bitmask of VkExternalSemaphoreFeatureFlagBitsKHR

Description

VkExternalSemaphoreFeatureFlags is a bitmask type for setting a mask of zero or more VkExternalSemaphoreFeatureFlagBits.

See Also

VkExternalSemaphoreFeatureFlagBits, VkExternalSemaphoreProperties