#[tokio::main]
async fn main() {
println!("๐งช Testing wgpu 29 API...");
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
flags: wgpu::InstanceFlags::default(),
memory_budget_thresholds: Default::default(),
backend_options: Default::default(),
display: None,
});
println!("โ
Instance created");
let adapters: Vec<_> = instance.enumerate_adapters(wgpu::Backends::all()).await;
println!(
"โ
enumerate_adapters() called and returned {} adapters",
adapters.len()
);
if let Some(adapter) = adapters.first() {
let info = adapter.get_info();
println!(" First adapter: {} ({:?})", info.name, info.device_type);
match adapter
.request_device(&wgpu::DeviceDescriptor {
label: Some("Test Device"),
required_features: wgpu::Features::empty(),
required_limits: wgpu::Limits::default(),
experimental_features: wgpu::ExperimentalFeatures::disabled(),
memory_hints: wgpu::MemoryHints::default(),
trace: wgpu::Trace::Off,
})
.await
{
Ok((device, _queue)) => {
println!("โ
Device and queue created successfully");
let buffer = device.create_buffer(&wgpu::BufferDescriptor {
label: Some("test buffer"),
size: 256,
usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false,
});
println!("โ
Buffer created: {} bytes", buffer.size());
println!("Device features: {:?}", device.features());
println!(
"Device limits: max_buffer_size = {}",
device.limits().max_buffer_size
);
}
Err(e) => {
println!("โ Device creation failed: {}", e);
}
}
} else {
println!("โ No adapters found");
}
println!("๐ฏ API test completed");
}