use std::collections::HashMap;
use std::sync::{Arc, Mutex};
pub struct PipelineRegistry {
inner: Mutex<HashMap<u64, Arc<wgpu::ComputePipeline>>>,
}
impl Default for PipelineRegistry {
fn default() -> Self {
Self::new()
}
}
impl PipelineRegistry {
pub fn new() -> Self {
Self {
inner: Mutex::new(HashMap::new()),
}
}
pub fn get(&self, key: &u64) -> Option<Arc<wgpu::ComputePipeline>> {
self.inner.lock().ok().and_then(|g| g.get(key).cloned())
}
pub fn insert(&self, key: u64, pipeline: Arc<wgpu::ComputePipeline>) {
if let Ok(mut g) = self.inner.lock() {
g.insert(key, pipeline);
}
}
}