pub unsafe trait CommandBuffer: DeviceOwned {
    type PoolAlloc;

    fn inner(&self) -> &UnsafeCommandBuffer<Self::PoolAlloc>;
    fn lock_submit(
        &self,
        future: &dyn GpuFuture,
        queue: &Queue
    ) -> Result<(), CommandBufferExecError>; unsafe fn unlock(&self); fn check_buffer_access(
        &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>; fn execute(
        self,
        queue: Arc<Queue>
    ) -> Result<CommandBufferExecFuture<NowFuture, Self>, CommandBufferExecError>
    where
        Self: Sized + 'static
, { ... } fn execute_after<F>(
        self,
        future: F,
        queue: Arc<Queue>
    ) -> Result<CommandBufferExecFuture<F, Self>, CommandBufferExecError>
    where
        Self: Sized + 'static,
        F: GpuFuture
, { ... } }

Required Associated Types

The command pool of the command buffer.

Required Methods

Returns the underlying UnsafeCommandBuffer of this command buffer.

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.

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.

Provided Methods

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.

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