Skip to main content

CommandStream

Struct CommandStream 

Source
pub struct CommandStream<A = ()> {
    pub args: A,
    /* private fields */
}
Expand description

A reusable command stream.

Prepared streams reduce repeated CPU-side graph construction and preparation work by caching an optimized schedule and static recording resources. Unprepared streams keep finalization cheaper up front, but each insertion still has to reconcile arguments, dependencies, scheduling, and recording with the parent graph.

Inserting or concatenating many tiny streams is not free. Profile release builds before designing around heavy stream composition.

let stream = CommandStream::prepare(&mut pool, |stream| {
    stream.begin_cmd().debug_name("cached commands").record_cmd(|_| {});
})?;

let mut graph = Graph::new();
graph.insert_cmd_stream(&stream).finish();

Fields§

§args: A

Typed handles returned by the preparation callback.

Implementations§

Source§

impl CommandStream<()>

Source

pub fn finalize<A>( build: impl FnOnce(&mut CommandStreamMut) -> A, ) -> CommandStreamDraft<A>

Finalizes a reusable command stream without preparing optimizations.

The returned draft can be inserted as an unprepared stream with CommandStreamDraft::into_stream or prepared later with CommandStreamDraft::prepare.

Source

pub fn prepare<P, A>( pool: &mut P, build: impl FnOnce(&mut CommandStreamMut) -> A, ) -> Result<CommandStream<A>, DriverError>
where P: SubmissionPool,

Finalizes and prepares a reusable command stream.

Prepared streams do more work up front so repeated insertions can reuse prepared scheduling and static recording resources.

Trait Implementations§

Source§

impl<A: Clone> Clone for CommandStream<A>

Source§

fn clone(&self) -> CommandStream<A>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<A: Debug> Debug for CommandStream<A>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<A> Freeze for CommandStream<A>
where A: Freeze,

§

impl<A> RefUnwindSafe for CommandStream<A>
where A: RefUnwindSafe,

§

impl<A> Send for CommandStream<A>
where A: Send,

§

impl<A> Sync for CommandStream<A>
where A: Sync,

§

impl<A> Unpin for CommandStream<A>
where A: Unpin,

§

impl<A> UnsafeUnpin for CommandStream<A>
where A: UnsafeUnpin,

§

impl<A> UnwindSafe for CommandStream<A>
where A: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.