gioser

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 614Markdown 274TOML 149RON 310606 Definiciones

⎇ main llimphi-wawa/examples/volcar_patron.rs Rust · 39 líneas · 1.6 KB Historia Quién tocó qué crudo

chore: refresco desde el monorepo — vello 0.9 / wgpu 29, 120 miembros d251eb32b · Sergio ·

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