pub struct MeshAllocatorSettings {
pub min_slab_size: u64,
pub max_slab_size: u64,
pub large_threshold: u64,
pub growth_factor: f64,
}
Expand description
Tunable parameters that customize the behavior of the allocator.
Generally, these parameters adjust the tradeoff between memory fragmentation and performance. You can adjust them as desired for your application. Most applications can stick with the default values.
Fields§
§min_slab_size: u64
The minimum size of a slab (hardware buffer), in bytes.
The default value is 1 MiB.
max_slab_size: u64
The maximum size of a slab (hardware buffer), in bytes.
When a slab reaches this limit, a new slab is created.
The default value is 512 MiB.
large_threshold: u64
The maximum size of vertex or index data that can be placed in a general slab, in bytes.
If a mesh has vertex or index data that exceeds this size limit, that data is placed in its own slab. This reduces fragmentation, but incurs more CPU-side binding overhead when drawing the mesh.
The default value is 256 MiB.
growth_factor: f64
The factor by which we scale a slab when growing it.
This value must be greater than 1. Higher values result in more fragmentation but fewer expensive copy operations when growing the buffer.
The default value is 1.5.
Trait Implementations§
Source§impl Default for MeshAllocatorSettings
impl Default for MeshAllocatorSettings
impl Resource for MeshAllocatorSettings
Auto Trait Implementations§
impl Freeze for MeshAllocatorSettings
impl RefUnwindSafe for MeshAllocatorSettings
impl Send for MeshAllocatorSettings
impl Sync for MeshAllocatorSettings
impl Unpin for MeshAllocatorSettings
impl UnwindSafe for MeshAllocatorSettings
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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