use std::sync::Arc; use wgpu::{Adapter, Device, Instance, Queue}; pub struct App { pub instance: Instance, pub device: Device, pub adapter: Adapter, pub queue: Queue, } impl App { pub async fn new() -> Arc { let instance = wgpu::Instance::new(wgpu::Backends::all()); let adapter = instance .request_adapter(&wgpu::RequestAdapterOptions::default()) .await .unwrap(); let (device, queue) = adapter .request_device( &wgpu::DeviceDescriptor { label: None, features: wgpu::Features::empty(), limits: wgpu::Limits::downlevel_defaults(), }, None, ) .await .unwrap(); Arc::new(Self { adapter, device, instance, queue, }) } }