Function wgpu_async::wrap
source · pub fn wrap(device: Arc<Device>, queue: Arc<Queue>) -> (AsyncDevice, AsyncQueue)
Expand description
Takes a regular wgpu::Device
and wgpu::Queue
and gives you the corresponding smart
pointers, AsyncDevice
and AsyncQueue
.
§Usage
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor::default());
let adapter = instance
.request_adapter(&wgpu::RequestAdapterOptions {
power_preference: wgpu::PowerPreference::HighPerformance,
compatible_surface: None,
force_fallback_adapter: true,
})
.await
.expect("missing adapter");
let (device, queue) = adapter
.request_device(
&wgpu::DeviceDescriptor {
required_features: wgpu::Features::empty(),
required_limits: adapter.limits(),
label: None,
},
None,
)
.await
.expect("missing device");
let (device, queue) = (Arc::new(device), Arc::new(queue));
let (async_device, async_queue) = wgpu_async::wrap(
Arc::clone(&device),
Arc::clone(&queue)
);
// Then we can do some async-enabled things:
let async_buffer = async_device.create_buffer(&wgpu::BufferDescriptor {
label: None,
size: 8192,
usage: wgpu::BufferUsages::MAP_READ,
mapped_at_creation: false,
});
async_buffer.slice(..).map_async(wgpu::MapMode::Read).await; // New await functionality!