Skip to main content

PassState

Struct PassState 

Source
struct PassState<'a> {
    pipeline: Option<&'a RenderPipeline>,
    bind_groups: ArrayVec<(u32, &'a BindGroup), MAX_BIND_GROUPS>,
    vertex_buffers: ArrayVec<(u32, &'a Buffer, Range<u64>), MAX_VERTEX_BUFFERS>,
    index_buffer: Option<(&'a Buffer, Range<u64>, IndexFormat)>,
    scissor: Option<ScissorRect>,
    viewport: Option<ViewportRect>,
    stencil_reference: u32,
}
Expand description

Which resources the previous draw left bound.

The entries borrow from the draws being recorded, which outlive the recording, so tracking them costs no clones. wgpu resources compare by identity, so a plain == is the fast “is this the same resource as last time” test the recording loop needs. The slots are fixed-capacity (MAX_BIND_GROUPS / MAX_VERTEX_BUFFERS) so recording a frame never allocates.

Fields§

§pipeline: Option<&'a RenderPipeline>§bind_groups: ArrayVec<(u32, &'a BindGroup), MAX_BIND_GROUPS>§vertex_buffers: ArrayVec<(u32, &'a Buffer, Range<u64>), MAX_VERTEX_BUFFERS>§index_buffer: Option<(&'a Buffer, Range<u64>, IndexFormat)>§scissor: Option<ScissorRect>§viewport: Option<ViewportRect>§stencil_reference: u32

Implementations§

Source§

impl<'a> PassState<'a>

Source

fn set_bind_group( &mut self, pass: &mut impl RenderPassInterface<'a>, index: u32, bind_group: &'a BindGroup, )

Source

fn set_vertex_buffer( &mut self, pass: &mut impl RenderPassInterface<'a>, slot: u32, buffer: &'a Buffer, range: Range<u64>, )

Vertex-buffer slots are keyed by slot, and their value is the buffer and the byte range bound to it.

Source

fn set_index_buffer( &mut self, pass: &mut impl RenderPassInterface<'a>, buffer: &'a Buffer, range: Range<u64>, format: IndexFormat, )

Source

fn set_scissor( &mut self, pass: &mut impl RenderPassInterface<'a>, scissor: ScissorRect, )

Narrow rasterization to scissor, skipping the call when the pass already has that rectangle — a clip rectangle is usually shared by many consecutive draws.

Source

fn set_viewport( &mut self, pass: &mut impl RenderPassInterface<'a>, viewport: ViewportRect, )

Set the viewport, skipping the call when the pass already holds that rectangle.

Source

fn set_stencil_reference( &mut self, pass: &mut impl RenderPassInterface<'a>, reference: u32, )

Set the stencil reference, skipping the call when the pass already holds it.

Trait Implementations§

Source§

impl<'a> Default for PassState<'a>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for PassState<'a>

§

impl<'a> !UnwindSafe for PassState<'a>

§

impl<'a> Forget for PassState<'a>

§

impl<'a> Freeze for PassState<'a>

§

impl<'a> Send for PassState<'a>

§

impl<'a> Sync for PassState<'a>

§

impl<'a> Unpin for PassState<'a>

§

impl<'a> UnsafeUnpin for PassState<'a>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

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

§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

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

§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

§

fn simd_from(_simd: S, value: T) -> T

§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

§

fn simd_into(self, simd: S) -> T

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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>

§

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

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

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

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more