tessera_ui/renderer/compute/
resource.rs1use std::collections::HashMap;
2
3pub type ComputeResource = wgpu::Buffer;
4pub type ComputeResourceRef = usize;
5
6#[derive(Debug)]
7pub struct ComputeResourceManager {
8 idx: usize,
9 resources: HashMap<usize, ComputeResource>,
10}
11
12impl Default for ComputeResourceManager {
13 fn default() -> Self {
14 Self::new()
15 }
16}
17
18impl ComputeResourceManager {
19 pub fn new() -> Self {
20 Self {
21 idx: 0,
22 resources: HashMap::new(),
23 }
24 }
25
26 pub fn clear(&mut self) {
28 self.idx = 0;
29 self.resources.clear();
30 }
31
32 pub fn push(&mut self, buffer: wgpu::Buffer) -> ComputeResourceRef {
34 self.resources.insert(self.idx, buffer);
35 let id = self.idx;
36 self.idx += 1;
37 id
38 }
39
40 pub fn get(&self, id: &ComputeResourceRef) -> Option<&ComputeResource> {
42 self.resources.get(id)
43 }
44
45 pub fn contains(&self, id: &ComputeResourceRef) -> bool {
47 self.resources.contains_key(id)
48 }
49
50 pub fn take(&mut self, id: &ComputeResourceRef) -> Option<ComputeResource> {
52 self.resources.remove(id)
53 }
54}