use std::num::NonZeroUsize;
#[derive(Debug, Clone)]
pub struct RendererConfig {
pub text_cache_capacity: NonZeroUsize,
pub svg_cache_capacity: NonZeroUsize,
pub svg_trees_capacity: NonZeroUsize,
pub shared_elements_capacity: NonZeroUsize,
pub image_uv_capacity: NonZeroUsize,
pub texture_registry_capacity: NonZeroUsize,
pub mega_heim_width: u32,
pub mega_heim_height: u32,
}
impl Default for RendererConfig {
fn default() -> Self {
Self {
text_cache_capacity: NonZeroUsize::new(8192).unwrap(),
svg_cache_capacity: NonZeroUsize::new(512).unwrap(),
svg_trees_capacity: NonZeroUsize::new(512).unwrap(),
shared_elements_capacity: NonZeroUsize::new(1024).unwrap(),
image_uv_capacity: NonZeroUsize::new(256).unwrap(),
texture_registry_capacity: NonZeroUsize::new(31).unwrap(),
mega_heim_width: 4096,
mega_heim_height: 4096,
}
}
}
impl RendererConfig {
pub fn low_vram() -> Self {
Self {
text_cache_capacity: NonZeroUsize::new(2048).unwrap(),
svg_cache_capacity: NonZeroUsize::new(128).unwrap(),
svg_trees_capacity: NonZeroUsize::new(128).unwrap(),
shared_elements_capacity: NonZeroUsize::new(256).unwrap(),
image_uv_capacity: NonZeroUsize::new(64).unwrap(),
texture_registry_capacity: NonZeroUsize::new(15).unwrap(),
mega_heim_width: 2048,
mega_heim_height: 2048,
}
}
pub fn high_end() -> Self {
Self {
text_cache_capacity: NonZeroUsize::new(16384).unwrap(),
svg_cache_capacity: NonZeroUsize::new(1024).unwrap(),
svg_trees_capacity: NonZeroUsize::new(1024).unwrap(),
shared_elements_capacity: NonZeroUsize::new(4096).unwrap(),
image_uv_capacity: NonZeroUsize::new(1024).unwrap(),
texture_registry_capacity: NonZeroUsize::new(127).unwrap(),
mega_heim_width: 8192,
mega_heim_height: 8192,
}
}
pub fn mega_heim_vram_bytes(&self) -> u64 {
self.mega_heim_width as u64 * self.mega_heim_height as u64 * 4
}
}