cvkg_render_gpu/subsystems/
config.rs1use std::num::NonZeroUsize;
8
9#[derive(Debug, Clone)]
17pub struct RendererConfig {
18 pub text_cache_capacity: NonZeroUsize,
20 pub svg_cache_capacity: NonZeroUsize,
22 pub svg_trees_capacity: NonZeroUsize,
24 pub shared_elements_capacity: NonZeroUsize,
26 pub image_uv_capacity: NonZeroUsize,
28 pub texture_registry_capacity: NonZeroUsize,
30 pub mega_heim_width: u32,
32 pub mega_heim_height: u32,
34}
35
36impl Default for RendererConfig {
37 fn default() -> Self {
38 Self {
41 text_cache_capacity: NonZeroUsize::new(8192).unwrap(),
42 svg_cache_capacity: NonZeroUsize::new(512).unwrap(),
43 svg_trees_capacity: NonZeroUsize::new(512).unwrap(),
44 shared_elements_capacity: NonZeroUsize::new(1024).unwrap(),
45 image_uv_capacity: NonZeroUsize::new(256).unwrap(),
46 texture_registry_capacity: NonZeroUsize::new(31).unwrap(),
47 mega_heim_width: 4096,
48 mega_heim_height: 4096,
49 }
50 }
51}
52
53impl RendererConfig {
54 pub fn low_vram() -> Self {
56 Self {
57 text_cache_capacity: NonZeroUsize::new(2048).unwrap(),
58 svg_cache_capacity: NonZeroUsize::new(128).unwrap(),
59 svg_trees_capacity: NonZeroUsize::new(128).unwrap(),
60 shared_elements_capacity: NonZeroUsize::new(256).unwrap(),
61 image_uv_capacity: NonZeroUsize::new(64).unwrap(),
62 texture_registry_capacity: NonZeroUsize::new(15).unwrap(),
63 mega_heim_width: 2048,
64 mega_heim_height: 2048,
65 }
66 }
67
68 pub fn high_end() -> Self {
70 Self {
71 text_cache_capacity: NonZeroUsize::new(16384).unwrap(),
72 svg_cache_capacity: NonZeroUsize::new(1024).unwrap(),
73 svg_trees_capacity: NonZeroUsize::new(1024).unwrap(),
74 shared_elements_capacity: NonZeroUsize::new(4096).unwrap(),
75 image_uv_capacity: NonZeroUsize::new(1024).unwrap(),
76 texture_registry_capacity: NonZeroUsize::new(127).unwrap(),
77 mega_heim_width: 8192,
78 mega_heim_height: 8192,
79 }
80 }
81
82 pub fn mega_heim_vram_bytes(&self) -> u64 {
85 self.mega_heim_width as u64 * self.mega_heim_height as u64 * 4
86 }
87}