fix view leak and add view count

This commit is contained in:
2025-08-24 22:13:02 -04:00
parent 74d01d14d4
commit 44a8b1cbeb
7 changed files with 41 additions and 18 deletions

View File

@@ -7,6 +7,7 @@ pub struct GpuTextures {
device: Device,
queue: Queue,
views: Vec<TextureView>,
view_count: usize,
samplers: Vec<Sampler>,
null_view: TextureView,
no_views: Vec<TextureView>,
@@ -23,19 +24,19 @@ impl GpuTextures {
TextureUpdate::Free(i) => self.free(i),
}
}
// if changed {
// println!("{}", self.views.len());
// }
changed
}
fn set(&mut self, i: u32, image: &DynamicImage) {
self.view_count += 1;
let view = self.create_view(image);
self.views[i as usize] = view;
}
fn free(&mut self, i: u32) {
self.view_count -= 1;
self.views[i as usize] = self.null_view.clone();
}
fn push(&mut self, image: &DynamicImage) {
self.view_count += 1;
let view = self.create_view(image);
self.views.push(view);
}
@@ -74,6 +75,7 @@ impl GpuTextures {
samplers: vec![default_sampler(device)],
no_views: vec![null_view.clone()],
null_view,
view_count: 0,
}
}
@@ -91,6 +93,10 @@ impl GpuTextures {
pub fn samplers(&self) -> Vec<&Sampler> {
self.samplers.iter().by_ref().collect()
}
pub fn view_count(&self) -> usize {
self.view_count
}
}
pub fn null_texture_view(device: &Device) -> TextureView {