Struct EncodingState

Source
pub(crate) struct EncodingState<'snatch_guard, 'cmd_enc, E: ?Sized = dyn DynCommandEncoder> {
    pub(crate) device: &'cmd_enc Arc<Device>,
    pub(crate) raw_encoder: &'cmd_enc mut E,
    pub(crate) tracker: &'cmd_enc mut Tracker,
    pub(crate) buffer_memory_init_actions: &'cmd_enc mut Vec<BufferInitTrackerAction>,
    pub(crate) texture_memory_actions: &'cmd_enc mut CommandBufferTextureMemoryActions,
    pub(crate) as_actions: &'cmd_enc mut Vec<AsAction>,
    pub(crate) temp_resources: &'cmd_enc mut Vec<TempResource>,
    pub(crate) indirect_draw_validation_resources: &'cmd_enc mut DrawResources,
    pub(crate) snatch_guard: &'snatch_guard SnatchGuard<'snatch_guard>,
    pub(crate) debug_scope_depth: &'cmd_enc mut u32,
}
Expand description

State applicable when encoding commands onto a compute pass, render pass, or directly to a command encoder.

Most encoding routines just want to receive an open encoder, write command(s) to it, and leave it open for whatever is next. In this case the E type parameter has the default value of dyn hal::DynCommandEncoder. To avoid confusion about encoder state, we set the convention that the encoder in an EncodingState holding a bare HAL reference must always be open.

Compute and render passes are more complicated. Because they record a command buffer for a housekeeping pre-pass which is inserted before the pass itself, the first thing they will do is close and reopen the encoder if it is already open. Unnecessary empty HAL passes can be avoided by passing them the encoder in whatever state it happens to be. In this case, E is InnerCommandEncoder, which tracks the state of the encoder. The callee (the render or compute pass) will open and close the encoder as necessary.

This structure is not supported by cbindgen because it contains a trait object reference.

cbindgen:ignore

Fields§

§device: &'cmd_enc Arc<Device>§raw_encoder: &'cmd_enc mut E§tracker: &'cmd_enc mut Tracker§buffer_memory_init_actions: &'cmd_enc mut Vec<BufferInitTrackerAction>§texture_memory_actions: &'cmd_enc mut CommandBufferTextureMemoryActions§as_actions: &'cmd_enc mut Vec<AsAction>§temp_resources: &'cmd_enc mut Vec<TempResource>§indirect_draw_validation_resources: &'cmd_enc mut DrawResources§snatch_guard: &'snatch_guard SnatchGuard<'snatch_guard>§debug_scope_depth: &'cmd_enc mut u32

Current debug scope nesting depth.

When encoding a compute or render pass, this is the depth of debug scopes in the pass, not the depth of debug scopes in the parent encoder.

Auto Trait Implementations§

§

impl<'snatch_guard, 'cmd_enc, E> Freeze for EncodingState<'snatch_guard, 'cmd_enc, E>
where E: ?Sized,

§

impl<'snatch_guard, 'cmd_enc, E = dyn DynCommandEncoder> !RefUnwindSafe for EncodingState<'snatch_guard, 'cmd_enc, E>

§

impl<'snatch_guard, 'cmd_enc, E> Send for EncodingState<'snatch_guard, 'cmd_enc, E>
where E: Send + ?Sized,

§

impl<'snatch_guard, 'cmd_enc, E> Sync for EncodingState<'snatch_guard, 'cmd_enc, E>
where E: Sync + ?Sized,

§

impl<'snatch_guard, 'cmd_enc, E> Unpin for EncodingState<'snatch_guard, 'cmd_enc, E>
where E: ?Sized,

§

impl<'snatch_guard, 'cmd_enc, E = dyn DynCommandEncoder> !UnwindSafe for EncodingState<'snatch_guard, 'cmd_enc, E>

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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

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, 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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,