| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.Fence
Synopsis
- createFence :: forall a io. (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) => Device -> FenceCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io Fence
- withFence :: forall a io r. (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) => Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> (io Fence -> (Fence -> io ()) -> r) -> r
- destroyFence :: forall io. MonadIO io => Device -> Fence -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- resetFences :: forall io. MonadIO io => Device -> ("fences" ::: Vector Fence) -> io ()
- getFenceStatus :: forall io. MonadIO io => Device -> Fence -> io Result
- waitForFences :: forall io. MonadIO io => Device -> ("fences" ::: Vector Fence) -> ("waitAll" ::: Bool) -> ("timeout" ::: Word64) -> io Result
- waitForFencesSafe :: forall io. MonadIO io => Device -> ("fences" ::: Vector Fence) -> ("waitAll" ::: Bool) -> ("timeout" ::: Word64) -> io Result
- data FenceCreateInfo (es :: [Type]) = FenceCreateInfo {
- next :: Chain es
- flags :: FenceCreateFlags
- newtype Fence = Fence Word64
- newtype FenceCreateFlagBits where
- type FenceCreateFlags = FenceCreateFlagBits
Documentation
Arguments
| :: forall a io. (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> FenceCreateInfo a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io Fence |
vkCreateFence - Create a new fence object
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validFenceCreateInfostructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pFencemust be a valid pointer to aFencehandle
Return Codes
See Also
VK_VERSION_1_0,
AllocationCallbacks,
Device, Fence,
FenceCreateInfo
withFence :: forall a io r. (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) => Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> (io Fence -> (Fence -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createFence and destroyFence
To ensure that destroyFence is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> Fence |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyFence - Destroy a fence object
Valid Usage
- All
queue submission
commands that refer to
fencemust have completed execution
- If
AllocationCallbackswere provided whenfencewas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whenfencewas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
fenceis notNULL_HANDLE,fencemust be a validFencehandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
fenceis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
fencemust be externally synchronized
See Also
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("fences" ::: Vector Fence) |
|
| -> io () |
vkResetFences - Resets one or more fence objects
Description
If any member of pFences currently has its
payload imported
with temporary permanence, that fence’s prior permanent payload is first
restored. The remaining operations described therefore operate on the
restored payload.
When resetFences is executed on the host, it defines a /fence unsignal
operation/ for each fence, which resets the fence to the unsignaled
state.
If any member of pFences is already in the unsignaled state when
resetFences is executed, then resetFences has no effect on that
fence.
Valid Usage
- Each element of
pFencesmust not be currently associated with any queue command that has not yet completed execution on that queue
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pFencesmust be a valid pointer to an array offenceCountvalidFencehandles -
fenceCountmust be greater than0 - Each element of
pFencesmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to each member of
pFencesmust be externally synchronized
Return Codes
See Also
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> Fence |
|
| -> io Result |
vkGetFenceStatus - Return the status of a fence
Description
Upon success, getFenceStatus returns the status of the fence object,
with the following return codes:
| Status | Meaning |
|---|---|
SUCCESS | The fence specified by fence is signaled. |
NOT_READY | The fence specified by fence is unsignaled. |
ERROR_DEVICE_LOST
| The device has been lost. See Lost Device. |
Fence Object Status Codes
If a queue submission command is pending execution, then the value returned by this command may immediately be out of date.
If the device has been lost (see
Lost Device),
getFenceStatus may return any of the above status codes. If the
device has been lost and getFenceStatus is called repeatedly, it will
eventually return either SUCCESS or
ERROR_DEVICE_LOST.
Return Codes
See Also
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("fences" ::: Vector Fence) |
|
| -> ("waitAll" ::: Bool) |
|
| -> ("timeout" ::: Word64) |
|
| -> io Result |
vkWaitForFences - Wait for one or more fences to become signaled
Description
If the condition is satisfied when waitForFences is called, then
waitForFences returns immediately. If the condition is not satisfied
at the time waitForFences is called, then waitForFences will block
and wait until the condition is satisfied or the timeout has expired,
whichever is sooner.
If timeout is zero, then waitForFences does not wait, but simply
returns the current state of the fences.
TIMEOUT will be returned in this case if
the condition is not satisfied, even though no actual wait was
performed.
If the condition is satisfied before the timeout has expired,
waitForFences returns SUCCESS. Otherwise,
waitForFences returns TIMEOUT after the
timeout has expired.
If device loss occurs (see
Lost Device)
before the timeout has expired, waitForFences must return in finite
time with either SUCCESS or
ERROR_DEVICE_LOST.
Note
While we guarantee that waitForFences must return in finite time, no
guarantees are made that it returns immediately upon device loss.
However, the client can reasonably expect that the delay will be on the
order of seconds and that calling waitForFences will not result in a
permanently (or seemingly permanently) dead process.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pFencesmust be a valid pointer to an array offenceCountvalidFencehandles -
fenceCountmust be greater than0 - Each element of
pFencesmust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("fences" ::: Vector Fence) |
|
| -> ("waitAll" ::: Bool) |
|
| -> ("timeout" ::: Word64) |
|
| -> io Result |
A variant of waitForFences which makes a *safe* FFI call
data FenceCreateInfo (es :: [Type]) Source #
VkFenceCreateInfo - Structure specifying parameters of a newly created fence
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_FENCE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofExportFenceCreateInfoorExportFenceWin32HandleInfoKHR - The
sTypevalue of each struct in thepNextchain must be unique -
flagsmust be a valid combination ofFenceCreateFlagBitsvalues
See Also
VK_VERSION_1_0,
FenceCreateFlags,
StructureType, createFence
Constructors
| FenceCreateInfo | |
Fields
| |
Instances
VkFence - Opaque handle to a fence object
See Also
VK_VERSION_1_0,
AcquireNextImageInfoKHR,
FenceGetFdInfoKHR,
FenceGetWin32HandleInfoKHR,
ImportFenceFdInfoKHR,
ImportFenceWin32HandleInfoKHR,
acquireNextImageKHR,
createFence, destroyFence,
getFenceStatus,
queueBindSparse,
queueSubmit,
queueSubmit2KHR,
registerDeviceEventEXT,
registerDisplayEventEXT,
resetFences, waitForFences
Instances
| Eq Fence Source # | |
| Ord Fence Source # | |
| Show Fence Source # | |
| Storable Fence Source # | |
| Zero Fence Source # | |
Defined in Vulkan.Core10.Handles | |
| HasObjectType Fence Source # | |
Defined in Vulkan.Core10.Handles Methods objectTypeAndHandle :: Fence -> (ObjectType, Word64) Source # | |
| IsHandle Fence Source # | |
Defined in Vulkan.Core10.Handles | |
newtype FenceCreateFlagBits Source #
VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fence
See Also
Constructors
| FenceCreateFlagBits Flags |
Bundled Patterns
| pattern FENCE_CREATE_SIGNALED_BIT :: FenceCreateFlagBits |
|