diff options
Diffstat (limited to '')
| -rw-r--r-- | wgpu/src/window/compositor.rs | 26 | 
1 files changed, 22 insertions, 4 deletions
| diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index 6d0c36f6..d4a59471 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -31,7 +31,10 @@ impl<Theme> Compositor<Theme> {          settings: Settings,          compatible_window: Option<&W>,      ) -> Option<Self> { -        let instance = wgpu::Instance::new(settings.internal_backend); +        let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { +            backends: settings.internal_backend, +            ..Default::default() +        });          log::info!("{:#?}", settings); @@ -46,7 +49,7 @@ impl<Theme> Compositor<Theme> {          #[allow(unsafe_code)]          let compatible_surface = compatible_window -            .map(|window| unsafe { instance.create_surface(window) }); +            .and_then(|window| unsafe { instance.create_surface(window).ok() });          let adapter = instance              .request_adapter(&wgpu::RequestAdapterOptions { @@ -63,7 +66,19 @@ impl<Theme> Compositor<Theme> {          log::info!("Selected: {:#?}", adapter.get_info());          let format = compatible_surface.as_ref().and_then(|surface| { -            surface.get_supported_formats(&adapter).first().copied() +            let capabilities = surface.get_capabilities(&adapter); + +            capabilities +                .formats +                .iter() +                .filter(|format| format.describe().srgb) +                .copied() +                .next() +                .or_else(|| { +                    log::warn!("No sRGB format found!"); + +                    capabilities.formats.first().copied() +                })          })?;          log::info!("Selected format: {:?}", format); @@ -144,7 +159,9 @@ impl<Theme> iced_graphics::window::Compositor for Compositor<Theme> {      ) -> wgpu::Surface {          #[allow(unsafe_code)]          unsafe { -            self.instance.create_surface(window) +            self.instance +                .create_surface(window) +                .expect("Create surface")          }      } @@ -163,6 +180,7 @@ impl<Theme> iced_graphics::window::Compositor for Compositor<Theme> {                  width,                  height,                  alpha_mode: wgpu::CompositeAlphaMode::Auto, +                view_formats: vec![],              },          );      } | 
