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