diff --git a/strafe-client/src/main.rs b/strafe-client/src/main.rs index d5fb27ec..8778f811 100644 --- a/strafe-client/src/main.rs +++ b/strafe-client/src/main.rs @@ -9,5 +9,5 @@ mod graphics_worker; const TITLE:&'static str=concat!("Strafe Client v",env!("CARGO_PKG_VERSION")); fn main(){ - setup::setup_and_start(TITLE); + pollster::block_on(setup::setup_and_start(TITLE)); } diff --git a/strafe-client/src/setup.rs b/strafe-client/src/setup.rs index 06a2e7af..89c41fc7 100644 --- a/strafe-client/src/setup.rs +++ b/strafe-client/src/setup.rs @@ -49,18 +49,18 @@ struct SetupContextPartial2<'a>{ surface:wgpu::Surface<'a>, } impl<'a> SetupContextPartial2<'a>{ - fn pick_adapter(self)->SetupContextPartial3<'a>{ + async fn pick_adapter(self)->SetupContextPartial3<'a>{ let adapter; //TODO: prefer adapter that implements optional features //let optional_features=optional_features(); let required_features=required_features(); - let chosen_adapter=pollster::block_on(self.instance.request_adapter(&wgpu::RequestAdapterOptions{ + let chosen_adapter=self.instance.request_adapter(&wgpu::RequestAdapterOptions{ power_preference:wgpu::PowerPreference::HighPerformance, force_fallback_adapter:false, compatible_surface:Some(&self.surface), - })); + }).await; if let Some(maybe_chosen_adapter)=chosen_adapter{ adapter=maybe_chosen_adapter; @@ -97,7 +97,7 @@ struct SetupContextPartial3<'a>{ adapter:wgpu::Adapter, } impl<'a> SetupContextPartial3<'a>{ - fn request_device(self)->SetupContextPartial4<'a>{ + async fn request_device(self)->SetupContextPartial4<'a>{ let optional_features=optional_features(); let required_features=required_features(); @@ -105,7 +105,7 @@ impl<'a> SetupContextPartial3<'a>{ let needed_limits=strafesnet_graphics::graphics::required_limits().using_resolution(self.adapter.limits()); let trace_dir=std::env::var("WGPU_TRACE"); - let (device, queue)=pollster::block_on(self.adapter + let (device, queue)=self.adapter .request_device( &wgpu::DeviceDescriptor { label: None, @@ -114,7 +114,7 @@ impl<'a> SetupContextPartial3<'a>{ memory_hints:wgpu::MemoryHints::Performance, }, trace_dir.ok().as_ref().map(std::path::Path::new), - )) + ).await .expect("Unable to find a suitable GPU adapter!"); SetupContextPartial4{ @@ -156,7 +156,7 @@ pub struct SetupContext<'a>{ pub config:wgpu::SurfaceConfiguration, } -pub fn setup_and_start(title:&str){ +pub async fn setup_and_start(title:&str){ let event_loop=winit::event_loop::EventLoop::new().unwrap(); println!("Initializing the surface..."); @@ -167,9 +167,9 @@ pub fn setup_and_start(title:&str){ let partial_2=partial_1.create_surface(&window).unwrap(); - let partial_3=partial_2.pick_adapter(); + let partial_3=partial_2.pick_adapter().await; - let partial_4=partial_3.request_device(); + let partial_4=partial_3.request_device().await; let size=window.inner_size();