//! Vuelca los patrones compartidos rasterizados **por CPU** (el camino de wawa) //! a archivos RGBA8 crudos, para compararlos contra el camino GPU. //! //! No es un demo: es la mitad de un test que no puede vivir en un solo binario. //! Los dos backends de `llimphi-text` (`cpu` y `vello`) son excluyentes, así que //! nadie puede linkear los dos y comparar en proceso. Esta mitad escribe; la //! otra —`llimphi-test/tests/cpu_vs_gpu.rs`— lee y compara. //! //! ```bash //! cargo run --manifest-path 02_ruway/llimphi/llimphi-wawa/Cargo.toml \ //! --no-default-features --features std --example volcar_patron -- //! ``` //! //! Lo cómodo es `./scripts/check-llimphi-cpu-vs-gpu.sh`, que corre las dos. use llimphi_cpu::lienzo::FormatoPixel; use llimphi_wawa::Cascara; include!("../../escena_patron.rs"); fn main() { let dir = std::env::args().nth(1).unwrap_or_else(|| { eprintln!("uso: volcar_patron "); std::process::exit(2); }); let dir = std::path::PathBuf::from(dir); std::fs::create_dir_all(&dir).expect("crear el directorio de salida"); let mut cascara = Cascara::new(ANCHO as u16, ALTO as u16); for (nombre, vista) in patrones::<()>() { cascara.fotograma(vista); let mut px = vec![0u8; (ANCHO * ALTO * 4) as usize]; cascara.volcar(&mut px, (ANCHO * 4) as usize, FormatoPixel::Rgba8); let ruta = dir.join(format!("{nombre}.rgba")); std::fs::write(&ruta, &px).expect("escribir el volcado"); println!("{nombre}: {} bytes → {}", px.len(), ruta.display()); } println!("patrones volcados: {}", patrones::<()>().len()); }