pub use facett_core::render::backend::{decide, gpu_arm_compiled, Backend, GpuProbe};
pub fn probe_from_env(usable_gpu: bool) -> GpuProbe {
let force_cpu = std::env::var_os("FACETT_RENDER_CPU").is_some()
|| std::env::var_os("FACETT_GRAPHVIEW_CPU").is_some();
GpuProbe { usable_gpu, force_cpu }
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn cpu_only_probe_always_picks_cpu() {
assert_eq!(decide(GpuProbe::cpu_only()), Backend::CpuVello);
}
#[test]
fn force_cpu_overrides_a_present_gpu() {
let p = GpuProbe { usable_gpu: true, force_cpu: true };
assert_eq!(decide(p), Backend::CpuVello);
}
#[test]
fn gpu_probe_picks_gpu_only_when_feature_on() {
let got = decide(GpuProbe::gpu());
if gpu_arm_compiled() {
assert_eq!(got, Backend::GpuVello);
} else {
assert_eq!(got, Backend::CpuVello);
}
}
#[test]
fn graphview_env_override_still_forces_cpu() {
let p = GpuProbe { usable_gpu: true, force_cpu: false };
assert!(decide(p).is_gpu() == gpu_arm_compiled());
let b: facett_core::render::Backend = Backend::CpuVello;
assert_eq!(b, Backend::CpuVello);
}
}