vulkan-3.3: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_KHR_external_fence_fd

Synopsis

Documentation

getFenceFdKHR :: forall io. MonadIO io => Device -> FenceGetFdInfoKHR -> io ("fd" ::: Int32) Source #

vkGetFenceFdKHR - Get a POSIX file descriptor handle for a fence

Parameters

  • device is the logical device that created the fence being exported.
  • pGetFdInfo is a pointer to a FenceGetFdInfoKHR structure containing parameters of the export operation.
  • pFd will return the file descriptor representing the fence payload.

Description

Each call to getFenceFdKHR must create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application must release ownership of the file descriptor when it is no longer needed.

Note

Ownership can be released in many ways. For example, the application can call close() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a fence payload.

If pGetFdInfo->handleType is EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT and the fence is signaled at the time getFenceFdKHR is called, pFd may return the value -1 instead of a valid file descriptor.

Where supported by the operating system, the implementation must set the file descriptor to be closed automatically when an execve system call is made.

Exporting a file descriptor from a fence may have side effects depending on the transference of the specified handle type, as described in Importing Fence State.

Return Codes

Success
Failure

See Also

Device, FenceGetFdInfoKHR

importFenceFdKHR :: forall io. MonadIO io => Device -> ImportFenceFdInfoKHR -> io () Source #

vkImportFenceFdKHR - Import a fence from a POSIX file descriptor

Parameters

  • device is the logical device that created the fence.
  • pImportFenceFdInfo is a pointer to a ImportFenceFdInfoKHR structure specifying the fence and import parameters.

Description

Importing a fence payload from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application must not perform any operations on the file descriptor after a successful import.

Applications can import the same fence payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance.

Return Codes

Success
Failure

See Also

Device, ImportFenceFdInfoKHR

data ImportFenceFdInfoKHR Source #

VkImportFenceFdInfoKHR - (None)

Description

The handle types supported by handleType are:

Handle Type Transference Permanence Supported
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT Reference Temporary,Permanent
EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT Copy Temporary

Handle Types Supported by ImportFenceFdInfoKHR

Valid Usage

If handleType is EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT, the special value -1 for fd is treated like a valid sync file descriptor referring to an object that has already signaled. The import operation will succeed and the Fence will have a temporarily imported payload as if a valid file descriptor had been provided.

Note

This special behavior for importing an invalid sync file descriptor allows easier interoperability with other system APIs which use the convention that an invalid sync file descriptor represents work that has already completed and does not need to be waited for. It is consistent with the option for implementations to return a -1 file descriptor when exporting a EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT from a Fence which is signaled.

Valid Usage (Implicit)

Host Synchronization

  • Host access to fence must be externally synchronized

See Also

ExternalFenceHandleTypeFlagBits, Fence, FenceImportFlags, StructureType, importFenceFdKHR

Constructors

ImportFenceFdInfoKHR 

Fields

Instances

Instances details
Show ImportFenceFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

Storable ImportFenceFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

FromCStruct ImportFenceFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

ToCStruct ImportFenceFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

Zero ImportFenceFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

data FenceGetFdInfoKHR Source #

VkFenceGetFdInfoKHR - Structure describing a POSIX FD fence export operation

Description

The properties of the file descriptor returned depend on the value of handleType. See ExternalFenceHandleTypeFlagBits for a description of the properties of the defined external fence handle types.

Valid Usage

  • handleType must have been included in ExportFenceCreateInfo::handleTypes when fence’s current payload was created
  • If handleType refers to a handle type with copy payload transference semantics, fence must be signaled, or have an associated fence signal operation pending execution
  • fence must not currently have its payload replaced by an imported payload as described below in Importing Fence Payloads unless that imported payload’s handle type was included in ExternalFenceProperties::exportFromImportedHandleTypes for handleType
  • handleType must be defined as a POSIX file descriptor handle

Valid Usage (Implicit)

See Also

ExternalFenceHandleTypeFlagBits, Fence, StructureType, getFenceFdKHR

Constructors

FenceGetFdInfoKHR 

Fields

Instances

Instances details
Show FenceGetFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

Storable FenceGetFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

FromCStruct FenceGetFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

ToCStruct FenceGetFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

Zero FenceGetFdInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_external_fence_fd

type KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" Source #

pattern KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #