Struct vulkano::sync::FenceSignalFuture [] [src]

#[must_use = "Dropping this object will immediately block the thread until the GPU has finished processing the submission"]
pub struct FenceSignalFuture<F> where
    F: GpuFuture
{ /* fields omitted */ }

Represents a fence being signaled after a previous event.

Contrary to most other future types, it is possible to block the current thread until the event happens. This is done by calling the wait() function.

Also note that the GpuFuture trait is implemented on Arc<FenceSignalFuture<_>>. This means that you can put this future in an Arc and keep a copy of it somewhere in order to know when the execution reached that point.

use std::sync::Arc;
use vulkano::sync::GpuFuture;

// Assuming you have a chain of operations, like this:
// let future = ...
//      .then_execute(foo)
//      .then_execute(bar)

// You can signal a fence at this point of the chain, and put the future in an `Arc`.
let fence_signal = Arc::new(future.then_signal_fence());

// And then continue the chain:
// fence_signal.clone()
//      .then_execute(baz)
//      .then_execute(qux)

// Later you can wait until you reach the point of `fence_signal`:
fence_signal.wait(None).unwrap();

Methods

impl<F> FenceSignalFuture<F> where
    F: GpuFuture
[src]

Blocks the current thread until the fence is signaled by the GPU. Performs a flush if necessary.

If timeout is None, then the wait is infinite. Otherwise the thread will unblock after the specified timeout has elapsed and an error will be returned.

If the wait is successful, this function also cleans any resource locked by previous submissions.

Trait Implementations

impl<F> GpuFuture for FenceSignalFuture<F> where
    F: GpuFuture
[src]

If possible, checks whether the submission has finished. If so, gives up ownership of the resources used by these submissions. Read more

Builds a submission that, if submitted, makes sure that the event represented by this GpuFuture will happen, and possibly contains extra elements (eg. a semaphore wait or an event wait) that makes the dependency with subsequent operations work. Read more

Flushes the future and submits to the GPU the actions that will permit this future to occur. Read more

Sets the future to its "complete" state, meaning that it can safely be destroyed. Read more

Returns true if elements submitted after this future can be submitted to a different queue than the other returned by queue(). Read more

Returns the queue that triggers the event. Returns None if unknown or irrelevant. Read more

Checks whether submitting something after this future grants access (exclusive or shared, depending on the parameter) to the given buffer on the given queue. Read more

Checks whether submitting something after this future grants access (exclusive or shared, depending on the parameter) to the given image on the given queue. Read more

Joins this future with another one, representing the moment when both events have happened.

Executes a command buffer after this future. Read more

Executes a command buffer after this future, on the same queue as the future. Read more

Signals a semaphore after this future. Returns another future that represents the signal. Read more

Signals a semaphore after this future and flushes it. Returns another future that represents the moment when the semaphore is signalled. Read more

Signals a fence after this future. Returns another future that represents the signal. Read more

Signals a fence after this future. Returns another future that represents the signal. Read more

Presents a swapchain image after this future. Read more

impl<F> DeviceOwned for FenceSignalFuture<F> where
    F: GpuFuture
[src]

Returns the device that owns Self.

impl<F> Drop for FenceSignalFuture<F> where
    F: GpuFuture
[src]

A method called when the value goes out of scope. Read more