Struct naga::proc::Layouter

source ·
pub struct Layouter {
    layouts: HandleVec<Type, TypeLayout>,
}
Expand description

Helper processor that derives the sizes of all types.

Layouter uses the default layout algorithm/table, described in [WGSL §4.3.7, “Memory Layout”]

A Layouter may be indexed by Handle<Type> values: layouter[handle] is the layout of the type whose handle is handle.

WGSL §4.3.7, “Memory Layout”

Fields§

§layouts: HandleVec<Type, TypeLayout>

Layouts for types in an arena.

Implementations§

source§

impl Layouter

source

pub fn clear(&mut self)

Remove all entries from this Layouter, retaining storage.

source

pub fn update(&mut self, gctx: GlobalCtx<'_>) -> Result<(), LayoutError>

Extend this Layouter with layouts for any new entries in gctx.types.

Ensure that every type in gctx.types has a corresponding TypeLayout in [self.layouts].

Some front ends need to be able to compute layouts for existing types while module construction is still in progress and new types are still being added. This function assumes that the TypeLayout values already present in self.layouts cover their corresponding entries in types, and extends self.layouts as needed to cover the rest. Thus, a front end can call this function at any time, passing its current type and constant arenas, and then assume that layouts are available for all types.

Trait Implementations§

source§

impl Debug for Layouter

source§

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

Formats the value using the given formatter. Read more
source§

impl Default for Layouter

source§

fn default() -> Layouter

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

impl Index<Handle<Type>> for Layouter

§

type Output = TypeLayout

The returned type after indexing.
source§

fn index(&self, handle: Handle<Type>) -> &TypeLayout

Performs the indexing (container[index]) operation. Read more

Auto Trait Implementations§

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

§

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

§

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.