use aura_ui::gpu::TextureAtlas;
use aura_ui::gpu::pipelines::Pipelines;
async fn headless_device() -> Option<(wgpu::Device, wgpu::Queue)> {
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor::new_without_display_handle());
let adapter = instance
.request_adapter(&wgpu::RequestAdapterOptions {
power_preference: wgpu::PowerPreference::LowPower,
..Default::default()
})
.await
.ok()?;
adapter.request_device(&wgpu::DeviceDescriptor::default()).await.ok()
}
#[test]
fn uber_shader_compiles_and_builds_all_pipelines() {
let Some((device, queue)) = pollster::block_on(headless_device()) else {
eprintln!("sin adaptador gráfico: se omite la prueba");
return;
};
let scope = device.push_error_scope(wgpu::ErrorFilter::Validation);
let pipelines = Pipelines::new(&device, wgpu::TextureFormat::Bgra8Unorm);
assert!(pipelines.is_ok());
let error = pollster::block_on(scope.pop());
assert!(error.is_none(), "error de validación: {error:?}");
let mut atlas = TextureAtlas::monochrome(&device);
let tile = atlas.insert(Some(&queue), 4, 4, &[255; 16]);
assert!(tile.is_some());
}