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();
Implementations
impl<F> FenceSignalFuture<F> where
F: GpuFuture,
[src]
impl<F> FenceSignalFuture<F> where
F: GpuFuture,
[src]pub fn wait(&self, timeout: Option<Duration>) -> Result<(), FlushError>
[src]
pub fn wait(&self, timeout: Option<Duration>) -> Result<(), FlushError>
[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> DeviceOwned for FenceSignalFuture<F> where
F: GpuFuture,
[src]
impl<F> DeviceOwned for FenceSignalFuture<F> where
F: GpuFuture,
[src]impl<F> Drop for FenceSignalFuture<F> where
F: GpuFuture,
[src]
impl<F> Drop for FenceSignalFuture<F> where
F: GpuFuture,
[src]impl<F> GpuFuture for FenceSignalFuture<F> where
F: GpuFuture,
[src]
impl<F> GpuFuture for FenceSignalFuture<F> where
F: GpuFuture,
[src]fn cleanup_finished(&mut self)
[src]
fn cleanup_finished(&mut self)
[src]If possible, checks whether the submission has finished. If so, gives up ownership of the resources used by these submissions. Read more
unsafe fn build_submission(&self) -> Result<SubmitAnyBuilder<'_>, FlushError>
[src]
unsafe fn build_submission(&self) -> Result<SubmitAnyBuilder<'_>, FlushError>
[src]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
fn flush(&self) -> Result<(), FlushError>
[src]
fn flush(&self) -> Result<(), FlushError>
[src]Flushes the future and submits to the GPU the actions that will permit this future to occur. Read more
unsafe fn signal_finished(&self)
[src]
unsafe fn signal_finished(&self)
[src]Sets the future to its “complete” state, meaning that it can safely be destroyed. Read more
fn queue_change_allowed(&self) -> bool
[src]
fn queue_change_allowed(&self) -> bool
[src]Returns true
if elements submitted after this future can be submitted to a different
queue than the other returned by queue()
. Read more
fn queue(&self) -> Option<Arc<Queue>>
[src]
fn queue(&self) -> Option<Arc<Queue>>
[src]Returns the queue that triggers the event. Returns None
if unknown or irrelevant. Read more
fn check_buffer_access(
&self,
buffer: &dyn BufferAccess,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlags)>, AccessCheckError>
[src]
fn check_buffer_access(
&self,
buffer: &dyn BufferAccess,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlags)>, AccessCheckError>
[src]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
fn check_image_access(
&self,
image: &dyn ImageAccess,
layout: ImageLayout,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlags)>, AccessCheckError>
[src]
fn check_image_access(
&self,
image: &dyn ImageAccess,
layout: ImageLayout,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlags)>, AccessCheckError>
[src]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
fn join<F>(self, other: F) -> JoinFuture<Self, F> where
Self: Sized,
F: GpuFuture,
[src]
fn join<F>(self, other: F) -> JoinFuture<Self, F> where
Self: Sized,
F: GpuFuture,
[src]Joins this future with another one, representing the moment when both events have happened.
fn then_execute<Cb>(
self,
queue: Arc<Queue>,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: PrimaryCommandBuffer + 'static,
[src]
fn then_execute<Cb>(
self,
queue: Arc<Queue>,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: PrimaryCommandBuffer + 'static,
[src]Executes a command buffer after this future. Read more
fn then_execute_same_queue<Cb>(
self,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: PrimaryCommandBuffer + 'static,
[src]
fn then_execute_same_queue<Cb>(
self,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: PrimaryCommandBuffer + 'static,
[src]Executes a command buffer after this future, on the same queue as the future. Read more
fn then_signal_semaphore(self) -> SemaphoreSignalFuture<Self> where
Self: Sized,
[src]
fn then_signal_semaphore(self) -> SemaphoreSignalFuture<Self> where
Self: Sized,
[src]Signals a semaphore after this future. Returns another future that represents the signal. Read more
fn then_signal_semaphore_and_flush(
self
) -> Result<SemaphoreSignalFuture<Self>, FlushError> where
Self: Sized,
[src]
fn then_signal_semaphore_and_flush(
self
) -> Result<SemaphoreSignalFuture<Self>, FlushError> where
Self: Sized,
[src]Signals a semaphore after this future and flushes it. Returns another future that represents the moment when the semaphore is signalled. Read more
fn then_signal_fence(self) -> FenceSignalFuture<Self> where
Self: Sized,
[src]
fn then_signal_fence(self) -> FenceSignalFuture<Self> where
Self: Sized,
[src]Signals a fence after this future. Returns another future that represents the signal. Read more
fn then_signal_fence_and_flush(
self
) -> Result<FenceSignalFuture<Self>, FlushError> where
Self: Sized,
[src]
fn then_signal_fence_and_flush(
self
) -> Result<FenceSignalFuture<Self>, FlushError> where
Self: Sized,
[src]Signals a fence after this future. Returns another future that represents the signal. Read more
fn then_swapchain_present<W>(
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize
) -> PresentFuture<Self, W> where
Self: Sized,
[src]
fn then_swapchain_present<W>(
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize
) -> PresentFuture<Self, W> where
Self: Sized,
[src]Presents a swapchain image after this future. Read more
fn then_swapchain_present_incremental<W>(
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize,
present_region: PresentRegion
) -> PresentFuture<Self, W> where
Self: Sized,
[src]
fn then_swapchain_present_incremental<W>(
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize,
present_region: PresentRegion
) -> PresentFuture<Self, W> where
Self: Sized,
[src]Same as then_swapchain_present
, except it allows specifying a present region. Read more
Auto Trait Implementations
impl<F> RefUnwindSafe for FenceSignalFuture<F>
impl<F> Send for FenceSignalFuture<F> where
F: Send,
F: Send,
impl<F> Sync for FenceSignalFuture<F> where
F: Send,
F: Send,
impl<F> Unpin for FenceSignalFuture<F> where
F: Unpin,
F: Unpin,
impl<F> UnwindSafe for FenceSignalFuture<F>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> Content for T
[src]
impl<T> Content for T
[src]pub fn ref_from_ptr(*mut c_void, usize) -> Option<*mut T>
[src]
pub fn ref_from_ptr(*mut c_void, usize) -> Option<*mut T>
[src]Builds a pointer to this type from a raw pointer.
pub fn is_size_suitable(usize) -> bool
[src]
pub fn is_size_suitable(usize) -> bool
[src]Returns true if the size is suitable to store a type like this.
pub fn indiv_size() -> usize
[src]
pub fn indiv_size() -> usize
[src]Returns the size of an individual element.