pub enum GpuPerformance {
Tier1, Tier2, Tier3, Tier4, Tier5, }
pub struct GpuInfo {
pub min_uniform_vectors: u32,
pub performance: GpuPerformance,
pub vendor: String,
pub renderer: String
}
impl Default for GpuInfo{
fn default()->Self{
Self{min_uniform_vectors:1024,
performance: GpuPerformance::Tier4,
vendor: "unknown".to_string(),
renderer: "unknown".to_string()
}
}
}
impl GpuInfo{
pub fn init_from_info(&mut self, min_uniform_vectors:u32, vendor:String, renderer:String){
self.vendor = vendor;
self.vendor.make_ascii_lowercase();
self.renderer = renderer;
self.renderer.make_ascii_lowercase();
self.min_uniform_vectors = min_uniform_vectors;
self.performance = GpuPerformance::Tier3;
if self.vendor.contains("qualcomm") && self.renderer.contains("540"){ self.performance = GpuPerformance::Tier1;
}
if self.vendor.contains("qualcomm") && self.renderer.contains("610"){ self.performance = GpuPerformance::Tier2;
}
if self.vendor.contains("intel"){
self.performance = GpuPerformance::Tier3;
}
if self.vendor.contains("ati"){
self.performance = GpuPerformance::Tier4;
}
if self.vendor.contains("nvidia"){
self.performance = GpuPerformance::Tier4;
}
}
pub fn is_low_on_uniform_vectors(&self)->bool{
self.min_uniform_vectors < 512
}
}