diff options
author | 2024-04-24 21:29:30 +0200 | |
---|---|---|
committer | 2024-04-24 21:29:30 +0200 | |
commit | 493c36ac712ef04523065b94988a88cc4db16b1a (patch) | |
tree | 9a19baac6fa56025a2aa29f3e5d77c7c98cec4b7 /wgpu/src/image/atlas.rs | |
parent | fdcec0319757d2f87c82787eab34c6bef8c5a799 (diff) | |
download | iced-493c36ac712ef04523065b94988a88cc4db16b1a.tar.gz iced-493c36ac712ef04523065b94988a88cc4db16b1a.tar.bz2 iced-493c36ac712ef04523065b94988a88cc4db16b1a.zip |
Make image `Cache` eviction strategy less aggressive in `iced_wgpu`
Instead of trimming unconditionally at the end of
a frame, we now trim the cache only when there is a
cache miss.
This way, images that are not visible but still a
part of the layout will stay cached. Eviction will
only happen when the images are not a part of the
UI for two consectuive frames.
Diffstat (limited to 'wgpu/src/image/atlas.rs')
-rw-r--r-- | wgpu/src/image/atlas.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/wgpu/src/image/atlas.rs b/wgpu/src/image/atlas.rs index ea36e06d..ae43c3b4 100644 --- a/wgpu/src/image/atlas.rs +++ b/wgpu/src/image/atlas.rs @@ -94,7 +94,7 @@ impl Atlas { entry }; - log::info!("Allocated atlas entry: {entry:?}"); + log::debug!("Allocated atlas entry: {entry:?}"); // It is a webgpu requirement that: // BufferCopyView.layout.bytes_per_row % wgpu::COPY_BYTES_PER_ROW_ALIGNMENT == 0 @@ -147,13 +147,20 @@ impl Atlas { } } - log::info!("Current atlas: {self:?}"); + if log::log_enabled!(log::Level::Debug) { + log::debug!( + "Atlas layers: {} (busy: {}, allocations: {})", + self.layer_count(), + self.layers.iter().filter(|layer| !layer.is_empty()).count(), + self.layers.iter().map(Layer::allocations).sum::<usize>(), + ); + } Some(entry) } pub fn remove(&mut self, entry: &Entry) { - log::info!("Removing atlas entry: {entry:?}"); + log::debug!("Removing atlas entry: {entry:?}"); match entry { Entry::Contiguous(allocation) => { @@ -266,7 +273,7 @@ impl Atlas { } fn deallocate(&mut self, allocation: &Allocation) { - log::info!("Deallocating atlas: {allocation:?}"); + log::debug!("Deallocating atlas: {allocation:?}"); match allocation { Allocation::Full { layer } => { |