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

Vulkan.Core10.Fence

Synopsis

Documentation

createFence Source #

Arguments

:: forall a io. (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that creates the fence.

-> FenceCreateInfo a

pCreateInfo is a pointer to a FenceCreateInfo structure containing information about how the fence is to be created.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io Fence 

vkCreateFence - Create a new fence object

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pCreateInfo must be a valid pointer to a valid FenceCreateInfo structure
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • pFence must be a valid pointer to a Fence handle

Return Codes

Success
Failure

See Also

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.

destroyFence Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the fence.

-> Fence

fence is the handle of the fence to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroyFence - Destroy a fence object

Valid Usage

  • All queue submission commands that refer to fence must have completed execution
  • If AllocationCallbacks were provided when fence was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when fence was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If fence is not NULL_HANDLE, fence must be a valid Fence handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If fence is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to fence must be externally synchronized

See Also

AllocationCallbacks, Device, Fence

resetFences Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the fences.

-> ("fences" ::: Vector Fence)

pFences is a pointer to an array of fence handles to reset.

-> 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 pFences must not be currently associated with any queue command that has not yet completed execution on that queue

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pFences must be a valid pointer to an array of fenceCount valid Fence handles
  • fenceCount must be greater than 0
  • Each element of pFences must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to each member of pFences must be externally synchronized

Return Codes

Success
Failure

See Also

Device, Fence

getFenceStatus Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the fence.

device must be a valid Device handle

-> Fence

fence is the handle of the fence to query.

fence must be a valid Fence handle

fence must have been created, allocated, or retrieved from device

-> 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

Success
Failure

See Also

Device, Fence

waitForFences Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the fences.

-> ("fences" ::: Vector Fence)

pFences is a pointer to an array of fenceCount fence handles.

-> ("waitAll" ::: Bool)

waitAll is the condition that must be satisfied to successfully unblock the wait. If waitAll is TRUE, then the condition is that all fences in pFences are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.

-> ("timeout" ::: Word64)

timeout is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may be substantially longer than one nanosecond, and may be longer than the requested period.

-> 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)

  • device must be a valid Device handle
  • pFences must be a valid pointer to an array of fenceCount valid Fence handles
  • fenceCount must be greater than 0
  • Each element of pFences must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

Bool32, Device, Fence

waitForFencesSafe Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the fences.

-> ("fences" ::: Vector Fence)

pFences is a pointer to an array of fenceCount fence handles.

-> ("waitAll" ::: Bool)

waitAll is the condition that must be satisfied to successfully unblock the wait. If waitAll is TRUE, then the condition is that all fences in pFences are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.

-> ("timeout" ::: Word64)

timeout is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may be substantially longer than one nanosecond, and may be longer than the requested period.

-> 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)

See Also

FenceCreateFlags, StructureType, createFence

Constructors

FenceCreateInfo 

Fields

Instances

Instances details
Extensible FenceCreateInfo Source # 
Instance details

Defined in Vulkan.Core10.Fence

Methods

extensibleType :: StructureType Source #

getNext :: forall (es :: [Type]). FenceCreateInfo es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). FenceCreateInfo ds -> Chain es -> FenceCreateInfo es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends FenceCreateInfo e => b) -> Maybe b Source #

Show (Chain es) => Show (FenceCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Fence

(Extendss FenceCreateInfo es, PeekChain es) => FromCStruct (FenceCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Fence

(Extendss FenceCreateInfo es, PokeChain es) => ToCStruct (FenceCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Fence

es ~ ('[] :: [Type]) => Zero (FenceCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Fence

newtype Fence Source #

Constructors

Fence Word64 

Instances

Instances details
Eq Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

(==) :: Fence -> Fence -> Bool #

(/=) :: Fence -> Fence -> Bool #

Ord Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

compare :: Fence -> Fence -> Ordering #

(<) :: Fence -> Fence -> Bool #

(<=) :: Fence -> Fence -> Bool #

(>) :: Fence -> Fence -> Bool #

(>=) :: Fence -> Fence -> Bool #

max :: Fence -> Fence -> Fence #

min :: Fence -> Fence -> Fence #

Show Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

showsPrec :: Int -> Fence -> ShowS #

show :: Fence -> String #

showList :: [Fence] -> ShowS #

Storable Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

sizeOf :: Fence -> Int #

alignment :: Fence -> Int #

peekElemOff :: Ptr Fence -> Int -> IO Fence #

pokeElemOff :: Ptr Fence -> Int -> Fence -> IO () #

peekByteOff :: Ptr b -> Int -> IO Fence #

pokeByteOff :: Ptr b -> Int -> Fence -> IO () #

peek :: Ptr Fence -> IO Fence #

poke :: Ptr Fence -> Fence -> IO () #

Zero Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

zero :: Fence Source #

HasObjectType Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

IsHandle Fence Source # 
Instance details

Defined in Vulkan.Core10.Handles

newtype FenceCreateFlagBits Source #

VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fence

See Also

FenceCreateFlags

Bundled Patterns

pattern FENCE_CREATE_SIGNALED_BIT :: FenceCreateFlagBits

FENCE_CREATE_SIGNALED_BIT specifies that the fence object is created in the signaled state. Otherwise, it is created in the unsignaled state.

Instances

Instances details
Eq FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

Ord FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

Read FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

Show FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

Storable FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

Bits FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

FiniteBits FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits

Zero FenceCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FenceCreateFlagBits