From 33653b766752a6aa0785357127af21af9932f6fc Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 31 May 2022 04:17:52 +0200 Subject: Try `Limits::default` in `iced_wgpu` before `downlevel_defaults` --- wgpu/src/window/compositor.rs | 46 +++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 19 deletions(-) (limited to 'wgpu/src/window') diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index 54ea8247..dde5f09f 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -1,6 +1,8 @@ use crate::{Backend, Color, Error, Renderer, Settings, Viewport}; +use futures::stream::{self, StreamExt}; use futures::task::SpawnExt; + use iced_graphics::compositor; use iced_native::futures; use raw_window_handle::HasRawWindowHandle; @@ -66,28 +68,34 @@ impl Compositor { log::info!("Selected format: {:?}", format); #[cfg(target_arch = "wasm32")] - let limits = wgpu::Limits::downlevel_webgl2_defaults() - .using_resolution(adapter.limits()); + let limits = [wgpu::Limits::downlevel_webgl2_defaults() + .using_resolution(adapter.limits())]; #[cfg(not(target_arch = "wasm32"))] - let limits = wgpu::Limits::downlevel_defaults(); - - let (device, queue) = adapter - .request_device( - &wgpu::DeviceDescriptor { - label: Some( - "iced_wgpu::window::compositor device descriptor", - ), - features: wgpu::Features::empty(), - limits: wgpu::Limits { - max_bind_groups: 2, - ..limits + let limits = + [wgpu::Limits::default(), wgpu::Limits::downlevel_defaults()]; + + let limits = limits.into_iter().map(|limits| wgpu::Limits { + max_bind_groups: 2, + ..limits + }); + + let (device, queue) = stream::iter(limits) + .filter_map(|limits| async { + adapter.request_device( + &wgpu::DeviceDescriptor { + label: Some( + "iced_wgpu::window::compositor device descriptor", + ), + features: wgpu::Features::empty(), + limits, }, - }, - None, - ) - .await - .ok()?; + None, + ).await.ok() + }) + .boxed() + .next() + .await?; let staging_belt = wgpu::util::StagingBelt::new(Self::CHUNK_SIZE); let local_pool = futures::executor::LocalPool::new(); -- cgit From c148557cabf1fb9127b00b248479de2eb1d1d477 Mon Sep 17 00:00:00 2001 From: Cupnfish Date: Sat, 2 Jul 2022 15:39:42 +0800 Subject: update `wgpu` to `0.13` --- wgpu/src/window/compositor.rs | 60 +++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 31 deletions(-) (limited to 'wgpu/src/window') diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index dde5f09f..c064a86c 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -1,7 +1,6 @@ use crate::{Backend, Color, Error, Renderer, Settings, Viewport}; use futures::stream::{self, StreamExt}; -use futures::task::SpawnExt; use iced_graphics::compositor; use iced_native::futures; @@ -16,7 +15,6 @@ pub struct Compositor { device: wgpu::Device, queue: wgpu::Queue, staging_belt: wgpu::util::StagingBelt, - local_pool: futures::executor::LocalPool, format: wgpu::TextureFormat, } @@ -61,9 +59,14 @@ impl Compositor { log::info!("Selected: {:#?}", adapter.get_info()); - let format = compatible_surface - .as_ref() - .and_then(|surface| surface.get_preferred_format(&adapter))?; + let format = compatible_surface.as_ref().and_then(|surface| { + let formats = surface.get_supported_formats(&adapter); + if formats.is_empty() { + None + } else { + Some(formats[0]) + } + })?; log::info!("Selected format: {:?}", format); @@ -98,7 +101,6 @@ impl Compositor { .await?; let staging_belt = wgpu::util::StagingBelt::new(Self::CHUNK_SIZE); - let local_pool = futures::executor::LocalPool::new(); Some(Compositor { instance, @@ -107,7 +109,6 @@ impl Compositor { device, queue, staging_belt, - local_pool, format, }) } @@ -200,24 +201,26 @@ impl iced_graphics::window::Compositor for Compositor { label: Some( "iced_wgpu::window::Compositor render pass", ), - color_attachments: &[wgpu::RenderPassColorAttachment { - view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear({ - let [r, g, b, a] = - background_color.into_linear(); - - wgpu::Color { - r: f64::from(r), - g: f64::from(g), - b: f64::from(b), - a: f64::from(a), - } - }), - store: true, + color_attachments: &[Some( + wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear({ + let [r, g, b, a] = + background_color.into_linear(); + + wgpu::Color { + r: f64::from(r), + g: f64::from(g), + b: f64::from(b), + a: f64::from(a), + } + }), + store: true, + }, }, - }], + )], depth_stencil_attachment: None, }); @@ -235,16 +238,11 @@ impl iced_graphics::window::Compositor for Compositor { // Submit work self.staging_belt.finish(); - self.queue.submit(Some(encoder.finish())); + let _idx = self.queue.submit(Some(encoder.finish())); frame.present(); // Recall staging buffers - self.local_pool - .spawner() - .spawn(self.staging_belt.recall()) - .expect("Recall staging belt"); - - self.local_pool.run_until_stalled(); + self.staging_belt.recall(); Ok(()) } -- cgit From 3d38d0af91ce4a1165928cf933c1e40dc80983ae Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 3 Jul 2022 15:30:04 +0200 Subject: Simplify format selection in `iced_wgpu` --- wgpu/src/window/compositor.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'wgpu/src/window') diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index c064a86c..cff7104d 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -60,12 +60,7 @@ impl Compositor { log::info!("Selected: {:#?}", adapter.get_info()); let format = compatible_surface.as_ref().and_then(|surface| { - let formats = surface.get_supported_formats(&adapter); - if formats.is_empty() { - None - } else { - Some(formats[0]) - } + surface.get_supported_formats(&adapter).first().copied() })?; log::info!("Selected format: {:?}", format); -- cgit From 9adc20922d16b990eede1f6c5f059e68efe15d0e Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 3 Jul 2022 15:48:32 +0200 Subject: Replace name abbreviation in `iced_wgpu` --- wgpu/src/window/compositor.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'wgpu/src/window') diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index cff7104d..91884ec4 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -233,7 +233,7 @@ impl iced_graphics::window::Compositor for Compositor { // Submit work self.staging_belt.finish(); - let _idx = self.queue.submit(Some(encoder.finish())); + let _submission = self.queue.submit(Some(encoder.finish())); frame.present(); // Recall staging buffers -- cgit