summaryrefslogtreecommitdiff
path: root/rust/crates/compositor/src/texture_store.rs
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-13 04:40:29 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-13 05:01:51 +0200
commit8230faf082c405c9fd0fa640f4ce2284315782ae (patch)
treee00bf694a83b4d14d6d56942ba89ba92402d854e /rust/crates/compositor/src/texture_store.rs
parentdbd68ff1396bf498eb97f095810b78d2bddd0011 (diff)
downloadopencut-8230faf082c405c9fd0fa640f4ce2284315782ae.tar.gz
feat: wasm compositor
Made-with: Cursor
Diffstat (limited to 'rust/crates/compositor/src/texture_store.rs')
-rw-r--r--rust/crates/compositor/src/texture_store.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/rust/crates/compositor/src/texture_store.rs b/rust/crates/compositor/src/texture_store.rs
new file mode 100644
index 00000000..ac905739
--- /dev/null
+++ b/rust/crates/compositor/src/texture_store.rs
@@ -0,0 +1,36 @@
+use std::collections::HashMap;
+
+use gpu::wgpu;
+
+pub struct StoredTexture {
+ texture: wgpu::Texture,
+}
+
+impl StoredTexture {
+ pub fn new(texture: wgpu::Texture) -> Self {
+ Self { texture }
+ }
+
+ pub fn texture(&self) -> &wgpu::Texture {
+ &self.texture
+ }
+}
+
+#[derive(Default)]
+pub struct TextureStore {
+ textures: HashMap<String, StoredTexture>,
+}
+
+impl TextureStore {
+ pub fn upsert(&mut self, id: String, texture: wgpu::Texture) {
+ self.textures.insert(id, StoredTexture::new(texture));
+ }
+
+ pub fn get(&self, id: &str) -> Option<&StoredTexture> {
+ self.textures.get(id)
+ }
+
+ pub fn remove(&mut self, id: &str) {
+ self.textures.remove(id);
+ }
+}