[−][src]Trait vulkano::command_buffer::CommandBuffer
Associated Types
type PoolAlloc
The command pool of the command buffer.
Required methods
fn inner(&self) -> &UnsafeCommandBuffer<Self::PoolAlloc>
Returns the underlying UnsafeCommandBuffer
of this command buffer.
fn lock_submit(
&self,
future: &dyn GpuFuture,
queue: &Queue
) -> Result<(), CommandBufferExecError>
&self,
future: &dyn GpuFuture,
queue: &Queue
) -> Result<(), CommandBufferExecError>
Checks whether this command buffer is allowed to be submitted after the future
and on
the given queue, and if so locks it.
If you call this function, then you should call unlock
afterwards.
unsafe fn unlock(&self)
Unlocks the command buffer. Should be called once for each call to lock_submit
.
Safety
Must not be called if you haven't called lock_submit
before.
fn check_buffer_access(
&self,
buffer: &dyn BufferAccess,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
&self,
buffer: &dyn BufferAccess,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
fn check_image_access(
&self,
image: &dyn ImageAccess,
layout: ImageLayout,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
&self,
image: &dyn ImageAccess,
layout: ImageLayout,
exclusive: bool,
queue: &Queue
) -> Result<Option<(PipelineStages, AccessFlagBits)>, AccessCheckError>
Provided methods
fn execute(
self,
queue: Arc<Queue>
) -> Result<CommandBufferExecFuture<NowFuture, Self>, CommandBufferExecError> where
Self: Sized + 'static,
self,
queue: Arc<Queue>
) -> Result<CommandBufferExecFuture<NowFuture, Self>, CommandBufferExecError> where
Self: Sized + 'static,
Executes this command buffer on a queue.
This function returns an object that implements the GpuFuture
trait. See the
documentation of the sync
module for more information.
The command buffer is not actually executed until you call flush()
on the object.
You are encouraged to chain together as many futures as possible before calling flush()
,
and call .then_signal_future()
before doing so. Note however that once you called
execute()
there is no way to cancel the execution, even if you didn't flush yet.
Note: In the future this function may return
-> impl GpuFuture
instead of a concrete type.
Note: This is just a shortcut for
execute_after(vulkano::sync::now(), queue)
.
Panic
Panics if the device of the command buffer is not the same as the device of the future.
fn execute_after<F>(
self,
future: F,
queue: Arc<Queue>
) -> Result<CommandBufferExecFuture<F, Self>, CommandBufferExecError> where
Self: Sized + 'static,
F: GpuFuture,
self,
future: F,
queue: Arc<Queue>
) -> Result<CommandBufferExecFuture<F, Self>, CommandBufferExecError> where
Self: Sized + 'static,
F: GpuFuture,
Executes the command buffer after an existing future.
This function returns an object that implements the GpuFuture
trait. See the
documentation of the sync
module for more information.
The command buffer is not actually executed until you call flush()
on the object.
You are encouraged to chain together as many futures as possible before calling flush()
,
and call .then_signal_future()
before doing so. Note however that once you called
execute()
there is no way to cancel the execution, even if you didn't flush yet.
Note: In the future this function may return
-> impl GpuFuture
instead of a concrete type.
This function requires the 'static
lifetime to be on the command buffer. This is because
this function returns a CommandBufferExecFuture
whose job is to lock resources and keep
them alive while they are in use by the GPU. If 'static
wasn't required, you could call
std::mem::forget
on that object and "unlock" these resources. For more information about
this problem, search the web for "rust thread scoped leakpocalypse".
Panic
Panics if the device of the command buffer is not the same as the device of the future.
Implementors
impl<P> CommandBuffer for AutoCommandBuffer<P>
[src]
type PoolAlloc = P
fn inner(&self) -> &UnsafeCommandBuffer<P>
[src]
fn lock_submit(
&self,
future: &dyn GpuFuture,
queue: &Queue
) -> Result<(), CommandBufferExecError>
[src]
&self,
future: &dyn GpuFuture,
queue: &Queue
) -> Result<(), CommandBufferExecError>
unsafe fn unlock(&self)
[src]
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>
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>
impl<T> CommandBuffer for T where
T: SafeDeref,
T::Target: CommandBuffer,
[src]
T: SafeDeref,
T::Target: CommandBuffer,
type PoolAlloc = <T::Target as CommandBuffer>::PoolAlloc
fn inner(&self) -> &UnsafeCommandBuffer<Self::PoolAlloc>
[src]
fn lock_submit(
&self,
future: &dyn GpuFuture,
queue: &Queue
) -> Result<(), CommandBufferExecError>
[src]
&self,
future: &dyn GpuFuture,
queue: &Queue
) -> Result<(), CommandBufferExecError>
unsafe fn unlock(&self)
[src]
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>
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>