pub struct MemoryBudget {
pub max_bytes: u64,
pub used_bytes: u64,
pub lod_usage: HashMap<LodLevel, u64>,
pub chunk_memory: HashMap<ChunkCoord, u64>,
pub lru_order: VecDeque<ChunkCoord>,
pub access_count: HashMap<ChunkCoord, u64>,
pub last_access_frame: HashMap<ChunkCoord, u64>,
pub policy: EvictionPolicy,
}Fields§
§max_bytes: u64§used_bytes: u64§lod_usage: HashMap<LodLevel, u64>§chunk_memory: HashMap<ChunkCoord, u64>§lru_order: VecDeque<ChunkCoord>§access_count: HashMap<ChunkCoord, u64>§last_access_frame: HashMap<ChunkCoord, u64>§policy: EvictionPolicyImplementations§
Source§impl MemoryBudget
impl MemoryBudget
pub fn new(max_mb: u64, policy: EvictionPolicy) -> Self
pub fn available_bytes(&self) -> u64
pub fn usage_ratio(&self) -> f32
pub fn can_allocate(&self, bytes: u64) -> bool
pub fn allocate( &mut self, coord: ChunkCoord, lod: LodLevel, bytes: u64, frame: u64, ) -> bool
pub fn free(&mut self, coord: &ChunkCoord, lod: &LodLevel)
pub fn touch(&mut self, coord: ChunkCoord, frame: u64)
pub fn eviction_candidates( &self, num: usize, current_frame: u64, ) -> Vec<ChunkCoord>
pub fn needs_eviction(&self) -> bool
pub fn memory_for_coord(&self, coord: &ChunkCoord) -> u64
pub fn lod_usage_mb(&self, lod: &LodLevel) -> f32
pub fn total_used_mb(&self) -> f32
pub fn chunk_count(&self) -> usize
Trait Implementations§
Source§impl Clone for MemoryBudget
impl Clone for MemoryBudget
Auto Trait Implementations§
impl Freeze for MemoryBudget
impl RefUnwindSafe for MemoryBudget
impl Send for MemoryBudget
impl Sync for MemoryBudget
impl Unpin for MemoryBudget
impl UnsafeUnpin for MemoryBudget
impl UnwindSafe for MemoryBudget
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.