makepad_platform/
gpu_info.rs1
2pub enum GpuPerformance {
3 Tier1, Tier2, Tier3, Tier4, Tier5, }
9
10pub struct GpuInfo {
11 pub min_uniform_vectors: u32,
12 pub performance: GpuPerformance,
13 pub vendor: String,
14 pub renderer: String
15}
16
17impl Default for GpuInfo{
18 fn default()->Self{
19 Self{min_uniform_vectors:1024,
21 performance: GpuPerformance::Tier4,
22 vendor: "unknown".to_string(),
23 renderer: "unknown".to_string()
24 }
25 }
26}
27
28impl GpuInfo{
29
30 pub fn init_from_info(&mut self, min_uniform_vectors:u32, vendor:String, renderer:String){
31 self.vendor = vendor;
32 self.vendor.make_ascii_lowercase();
33 self.renderer = renderer;
34 self.renderer.make_ascii_lowercase();
35
36 self.min_uniform_vectors = min_uniform_vectors;
37
38 self.performance = GpuPerformance::Tier3;
40
41 if self.vendor.contains("qualcomm") && self.renderer.contains("540"){ self.performance = GpuPerformance::Tier1;
44 }
45 if self.vendor.contains("qualcomm") && self.renderer.contains("610"){ self.performance = GpuPerformance::Tier2;
47 }
48 if self.vendor.contains("intel"){
49 self.performance = GpuPerformance::Tier3;
50 }
51 if self.vendor.contains("ati"){
52 self.performance = GpuPerformance::Tier4;
53 }
54 if self.vendor.contains("nvidia"){
55 self.performance = GpuPerformance::Tier4;
56 }
57 }
58
59 pub fn is_low_on_uniform_vectors(&self)->bool{
60 self.min_uniform_vectors < 512
61 }
62
63}
64