aboutsummaryrefslogtreecommitdiff
path: root/vgcodec/src/app.rs
blob: 0c063a56bcd9827a304ac79ba7b6fd3b03038403 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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<Self> {
        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,
        })
    }
}