[−][src]Struct vulkano::sync::FenceSignalFuture
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]
F: GpuFuture,
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]
F: GpuFuture,
impl<F> Drop for FenceSignalFuture<F> where
F: GpuFuture,
[src]
F: GpuFuture,
impl<F> GpuFuture for FenceSignalFuture<F> where
F: GpuFuture,
[src]
F: GpuFuture,
pub fn cleanup_finished(&mut self)
[src]
pub unsafe fn build_submission(
&self
) -> Result<SubmitAnyBuilder<'_>, FlushError>
[src]
&self
) -> Result<SubmitAnyBuilder<'_>, FlushError>
pub fn flush(&self) -> Result<(), FlushError>
[src]
pub unsafe fn signal_finished(&self)
[src]
pub fn queue_change_allowed(&self) -> bool
[src]
pub fn queue(&self) -> Option<Arc<Queue>>
[src]
pub fn check_buffer_access(
&self,
buffer: &dyn BufferAccess,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
[src]
&self,
buffer: &dyn BufferAccess,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
pub fn check_image_access(
&self,
image: &dyn ImageAccess,
layout: ImageLayout,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
[src]
&self,
image: &dyn ImageAccess,
layout: ImageLayout,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
pub fn join<F>(self, other: F) -> JoinFuture<Self, F> where
Self: Sized,
F: GpuFuture,
[src]
Self: Sized,
F: GpuFuture,
pub fn then_execute<Cb>(
self,
queue: Arc<Queue>,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: CommandBuffer + 'static,
[src]
self,
queue: Arc<Queue>,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: CommandBuffer + 'static,
pub fn then_execute_same_queue<Cb>(
self,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: CommandBuffer + 'static,
[src]
self,
command_buffer: Cb
) -> Result<CommandBufferExecFuture<Self, Cb>, CommandBufferExecError> where
Self: Sized,
Cb: CommandBuffer + 'static,
pub fn then_signal_semaphore(self) -> SemaphoreSignalFuture<Self> where
Self: Sized,
[src]
Self: Sized,
pub fn then_signal_semaphore_and_flush(
self
) -> Result<SemaphoreSignalFuture<Self>, FlushError> where
Self: Sized,
[src]
self
) -> Result<SemaphoreSignalFuture<Self>, FlushError> where
Self: Sized,
pub fn then_signal_fence(self) -> FenceSignalFuture<Self> where
Self: Sized,
[src]
Self: Sized,
pub fn then_signal_fence_and_flush(
self
) -> Result<FenceSignalFuture<Self>, FlushError> where
Self: Sized,
[src]
self
) -> Result<FenceSignalFuture<Self>, FlushError> where
Self: Sized,
pub fn then_swapchain_present<W>(
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize
) -> PresentFuture<Self, W> where
Self: Sized,
[src]
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize
) -> PresentFuture<Self, W> where
Self: Sized,
pub 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]
self,
queue: Arc<Queue>,
swapchain: Arc<Swapchain<W>>,
image_index: usize,
present_region: PresentRegion
) -> PresentFuture<Self, W> where
Self: Sized,
pub fn boxed(self) -> Box<dyn GpuFuture> where
Self: Sized + 'static,
[src]
Self: Sized + 'static,
Auto Trait Implementations
impl<F> RefUnwindSafe for FenceSignalFuture<F>
[src]
impl<F> Send for FenceSignalFuture<F> where
F: Send,
[src]
F: Send,
impl<F> Sync for FenceSignalFuture<F> where
F: Send,
[src]
F: Send,
impl<F> Unpin for FenceSignalFuture<F> where
F: Unpin,
[src]
F: Unpin,
impl<F> UnwindSafe for FenceSignalFuture<F>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Content for T
[src]
pub fn ref_from_ptr(*mut c_void, usize) -> Option<*mut T>
[src]
pub fn is_size_suitable(usize) -> bool
[src]
pub fn indiv_size() -> usize
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,