summaryrefslogtreecommitdiffstats
path: root/wgpu/src/window
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/window')
-rw-r--r--wgpu/src/window/compositor.rs60
1 files changed, 29 insertions, 31 deletions
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(())
}