diff options
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | examples/integration_wgpu/Cargo.toml | 2 | ||||
| -rw-r--r-- | examples/integration_wgpu/src/main.rs | 34 | ||||
| -rw-r--r-- | examples/integration_wgpu/src/scene.rs | 2 | ||||
| -rw-r--r-- | graphics/src/window/compositor.rs | 1 | ||||
| -rw-r--r-- | wgpu/Cargo.toml | 5 | ||||
| -rw-r--r-- | wgpu/src/image.rs | 21 | ||||
| -rw-r--r-- | wgpu/src/image/atlas.rs | 17 | ||||
| -rw-r--r-- | wgpu/src/quad.rs | 17 | ||||
| -rw-r--r-- | wgpu/src/settings.rs | 22 | ||||
| -rw-r--r-- | wgpu/src/triangle.rs | 17 | ||||
| -rw-r--r-- | wgpu/src/triangle/msaa.rs | 13 | ||||
| -rw-r--r-- | wgpu/src/window/compositor.rs | 34 | ||||
| -rw-r--r-- | winit/src/application.rs | 3 | 
14 files changed, 100 insertions, 89 deletions
@@ -10,6 +10,7 @@ documentation = "https://docs.rs/iced"  readme = "README.md"  keywords = ["gui", "ui", "graphics", "interface", "widgets"]  categories = ["gui"] +resolver = "2"  [features]  default = ["wgpu", "default_system_font"] diff --git a/examples/integration_wgpu/Cargo.toml b/examples/integration_wgpu/Cargo.toml index 743c655e..26c5a07d 100644 --- a/examples/integration_wgpu/Cargo.toml +++ b/examples/integration_wgpu/Cargo.toml @@ -7,5 +7,5 @@ publish = false  [dependencies]  iced_winit = { path = "../../winit" } -iced_wgpu = { path = "../../wgpu" } +iced_wgpu = { path = "../../wgpu", features=["spirv"] }  env_logger = "0.8" diff --git a/examples/integration_wgpu/src/main.rs b/examples/integration_wgpu/src/main.rs index 6f319466..7ef148bc 100644 --- a/examples/integration_wgpu/src/main.rs +++ b/examples/integration_wgpu/src/main.rs @@ -31,7 +31,7 @@ pub fn main() {      let mut clipboard = Clipboard::connect(&window);      // Initialize wgpu -    let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY); +    let instance = wgpu::Instance::new(wgpu::Backends::PRIMARY);      let surface = unsafe { instance.create_surface(&window) };      let (format, (mut device, queue)) = futures::executor::block_on(async { @@ -44,8 +44,8 @@ pub fn main() {              .expect("Request adapter");          ( -            adapter -                .get_swap_chain_preferred_format(&surface) +            surface +                .get_preferred_format(&adapter)                  .expect("Get preferred format"),              adapter                  .request_device( @@ -61,13 +61,13 @@ pub fn main() {          )      }); -    let mut swap_chain = { +    {          let size = window.inner_size(); -        device.create_swap_chain( -            &surface, -            &wgpu::SwapChainDescriptor { -                usage: wgpu::TextureUsage::RENDER_ATTACHMENT, +        surface.configure( +            &device, +            &wgpu::SurfaceConfiguration { +                usage: wgpu::TextureUsages::RENDER_ATTACHMENT,                  format,                  width: size.width,                  height: size.height, @@ -158,10 +158,10 @@ pub fn main() {                  if resized {                      let size = window.inner_size(); -                    swap_chain = device.create_swap_chain( -                        &surface, -                        &wgpu::SwapChainDescriptor { -                            usage: wgpu::TextureUsage::RENDER_ATTACHMENT, +                    surface.configure( +                        &device, +                        &wgpu::SurfaceConfiguration { +                            usage: wgpu::TextureUsages::RENDER_ATTACHMENT,                              format: format,                              width: size.width,                              height: size.height, @@ -172,7 +172,7 @@ pub fn main() {                      resized = false;                  } -                match swap_chain.get_current_frame() { +                match surface.get_current_frame() {                      Ok(frame) => {                          let mut encoder = device.create_command_encoder(                              &wgpu::CommandEncoderDescriptor { label: None }, @@ -180,10 +180,12 @@ pub fn main() {                          let program = state.program(); +                        let view = frame.output.texture.create_view(&wgpu::TextureViewDescriptor::default()); +                          {                              // We clear the frame                              let mut render_pass = scene.clear( -                                &frame.output.view, +                                &view,                                  &mut encoder,                                  program.background_color(),                              ); @@ -197,7 +199,7 @@ pub fn main() {                              &mut device,                              &mut staging_belt,                              &mut encoder, -                            &frame.output.view, +                            &view,                              &viewport,                              state.primitive(),                              &debug.overlay(), @@ -223,7 +225,7 @@ pub fn main() {                          local_pool.run_until_stalled();                      }                      Err(error) => match error { -                        wgpu::SwapChainError::OutOfMemory => { +                        wgpu::SurfaceError::OutOfMemory => {                              panic!("Swapchain error: {}. Rendering cannot continue.", error)                          }                          _ => { diff --git a/examples/integration_wgpu/src/scene.rs b/examples/integration_wgpu/src/scene.rs index 3e8277c8..0b2b1fcd 100644 --- a/examples/integration_wgpu/src/scene.rs +++ b/examples/integration_wgpu/src/scene.rs @@ -79,7 +79,7 @@ fn build_pipeline(device: &wgpu::Device) -> wgpu::RenderPipeline {                          color: wgpu::BlendComponent::REPLACE,                          alpha: wgpu::BlendComponent::REPLACE,                      }), -                    write_mask: wgpu::ColorWrite::ALL, +                    write_mask: wgpu::ColorWrites::ALL,                  }],              }),              primitive: wgpu::PrimitiveState { diff --git a/graphics/src/window/compositor.rs b/graphics/src/window/compositor.rs index de2a6990..20df8c8b 100644 --- a/graphics/src/window/compositor.rs +++ b/graphics/src/window/compositor.rs @@ -51,6 +51,7 @@ pub trait Compositor: Sized {          &mut self,          renderer: &mut Self::Renderer,          swap_chain: &mut Self::SwapChain, +        surface: &mut Self::Surface,          viewport: &Viewport,          background_color: Color,          output: &<Self::Renderer as iced_native::Renderer>::Output, diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 9675797d..940af079 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -24,10 +24,11 @@ farbfeld = ["image_rs/farbfeld"]  canvas = ["iced_graphics/canvas"]  qr_code = ["iced_graphics/qr_code"]  default_system_font = ["iced_graphics/font-source"] +spirv = ["wgpu/spirv"]  [dependencies] -wgpu = "0.9" -wgpu_glyph = "0.13" +wgpu = "0.10" +wgpu_glyph = {git="https://github.com/rukai/wgpu_glyph.git", branch="update_wgpu_0.10"}  glyph_brush = "0.7"  raw-window-handle = "0.3"  log = "0.4" diff --git a/wgpu/src/image.rs b/wgpu/src/image.rs index 85663bf5..a59dc04b 100644 --- a/wgpu/src/image.rs +++ b/wgpu/src/image.rs @@ -61,7 +61,7 @@ impl Pipeline {                  entries: &[                      wgpu::BindGroupLayoutEntry {                          binding: 0, -                        visibility: wgpu::ShaderStage::VERTEX, +                        visibility: wgpu::ShaderStages::VERTEX,                          ty: wgpu::BindingType::Buffer {                              ty: wgpu::BufferBindingType::Uniform,                              has_dynamic_offset: false, @@ -73,7 +73,7 @@ impl Pipeline {                      },                      wgpu::BindGroupLayoutEntry {                          binding: 1, -                        visibility: wgpu::ShaderStage::FRAGMENT, +                        visibility: wgpu::ShaderStages::FRAGMENT,                          ty: wgpu::BindingType::Sampler {                              comparison: false,                              filtering: true, @@ -86,7 +86,7 @@ impl Pipeline {          let uniforms_buffer = device.create_buffer(&wgpu::BufferDescriptor {              label: Some("iced_wgpu::image uniforms buffer"),              size: mem::size_of::<Uniforms>() as u64, -            usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, +            usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,              mapped_at_creation: false,          }); @@ -117,7 +117,7 @@ impl Pipeline {                  label: Some("iced_wgpu::image texture atlas layout"),                  entries: &[wgpu::BindGroupLayoutEntry {                      binding: 0, -                    visibility: wgpu::ShaderStage::FRAGMENT, +                    visibility: wgpu::ShaderStages::FRAGMENT,                      ty: wgpu::BindingType::Texture {                          sample_type: wgpu::TextureSampleType::Float {                              filterable: true, @@ -142,7 +142,6 @@ impl Pipeline {                  source: wgpu::ShaderSource::Wgsl(std::borrow::Cow::Borrowed(                      include_str!("shader/image.wgsl"),                  )), -                flags: wgpu::ShaderFlags::all(),              });          let pipeline = @@ -155,7 +154,7 @@ impl Pipeline {                      buffers: &[                          wgpu::VertexBufferLayout {                              array_stride: mem::size_of::<Vertex>() as u64, -                            step_mode: wgpu::InputStepMode::Vertex, +                            step_mode: wgpu::VertexStepMode::Vertex,                              attributes: &[wgpu::VertexAttribute {                                  shader_location: 0,                                  format: wgpu::VertexFormat::Float32x2, @@ -164,7 +163,7 @@ impl Pipeline {                          },                          wgpu::VertexBufferLayout {                              array_stride: mem::size_of::<Instance>() as u64, -                            step_mode: wgpu::InputStepMode::Instance, +                            step_mode: wgpu::VertexStepMode::Instance,                              attributes: &wgpu::vertex_attr_array!(                                  1 => Float32x2,                                  2 => Float32x2, @@ -192,7 +191,7 @@ impl Pipeline {                                  operation: wgpu::BlendOperation::Add,                              },                          }), -                        write_mask: wgpu::ColorWrite::ALL, +                        write_mask: wgpu::ColorWrites::ALL,                      }],                  }),                  primitive: wgpu::PrimitiveState { @@ -212,20 +211,20 @@ impl Pipeline {              device.create_buffer_init(&wgpu::util::BufferInitDescriptor {                  label: Some("iced_wgpu::image vertex buffer"),                  contents: bytemuck::cast_slice(&QUAD_VERTS), -                usage: wgpu::BufferUsage::VERTEX, +                usage: wgpu::BufferUsages::VERTEX,              });          let indices =              device.create_buffer_init(&wgpu::util::BufferInitDescriptor {                  label: Some("iced_wgpu::image index buffer"),                  contents: bytemuck::cast_slice(&QUAD_INDICES), -                usage: wgpu::BufferUsage::INDEX, +                usage: wgpu::BufferUsages::INDEX,              });          let instances = device.create_buffer(&wgpu::BufferDescriptor {              label: Some("iced_wgpu::image instance buffer"),              size: mem::size_of::<Instance>() as u64 * Instance::MAX as u64, -            usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, +            usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,              mapped_at_creation: false,          }); diff --git a/wgpu/src/image/atlas.rs b/wgpu/src/image/atlas.rs index 4855fa4a..c1347e55 100644 --- a/wgpu/src/image/atlas.rs +++ b/wgpu/src/image/atlas.rs @@ -36,9 +36,9 @@ impl Atlas {              sample_count: 1,              dimension: wgpu::TextureDimension::D2,              format: wgpu::TextureFormat::Bgra8UnormSrgb, -            usage: wgpu::TextureUsage::COPY_DST -                | wgpu::TextureUsage::COPY_SRC -                | wgpu::TextureUsage::SAMPLED, +            usage: wgpu::TextureUsages::COPY_DST +                | wgpu::TextureUsages::COPY_SRC +                | wgpu::TextureUsages::TEXTURE_BINDING,          });          let texture_view = texture.create_view(&wgpu::TextureViewDescriptor { @@ -107,7 +107,7 @@ impl Atlas {              device.create_buffer_init(&wgpu::util::BufferInitDescriptor {                  label: Some("iced_wgpu::image staging buffer"),                  contents: &padded_data, -                usage: wgpu::BufferUsage::COPY_SRC, +                usage: wgpu::BufferUsages::COPY_SRC,              });          match &entry { @@ -316,6 +316,7 @@ impl Atlas {                      y,                      z: layer as u32,                  }, +                aspect: wgpu::TextureAspect::default(),              },              extent,          ); @@ -342,9 +343,9 @@ impl Atlas {              sample_count: 1,              dimension: wgpu::TextureDimension::D2,              format: wgpu::TextureFormat::Bgra8UnormSrgb, -            usage: wgpu::TextureUsage::COPY_DST -                | wgpu::TextureUsage::COPY_SRC -                | wgpu::TextureUsage::SAMPLED, +            usage: wgpu::TextureUsages::COPY_DST +                | wgpu::TextureUsages::COPY_SRC +                | wgpu::TextureUsages::TEXTURE_BINDING,          });          let amount_to_copy = self.layers.len() - amount; @@ -365,6 +366,7 @@ impl Atlas {                          y: 0,                          z: i as u32,                      }, +                    aspect: wgpu::TextureAspect::default(),                  },                  wgpu::ImageCopyTexture {                      texture: &new_texture, @@ -374,6 +376,7 @@ impl Atlas {                          y: 0,                          z: i as u32,                      }, +                    aspect: wgpu::TextureAspect::default(),                  },                  wgpu::Extent3d {                      width: SIZE, diff --git a/wgpu/src/quad.rs b/wgpu/src/quad.rs index 93942fba..148d0f6a 100644 --- a/wgpu/src/quad.rs +++ b/wgpu/src/quad.rs @@ -23,7 +23,7 @@ impl Pipeline {                  label: Some("iced_wgpu::quad uniforms layout"),                  entries: &[wgpu::BindGroupLayoutEntry {                      binding: 0, -                    visibility: wgpu::ShaderStage::VERTEX, +                    visibility: wgpu::ShaderStages::VERTEX,                      ty: wgpu::BindingType::Buffer {                          ty: wgpu::BufferBindingType::Uniform,                          has_dynamic_offset: false, @@ -38,7 +38,7 @@ impl Pipeline {          let constants_buffer = device.create_buffer(&wgpu::BufferDescriptor {              label: Some("iced_wgpu::quad uniforms buffer"),              size: mem::size_of::<Uniforms>() as wgpu::BufferAddress, -            usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, +            usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,              mapped_at_creation: false,          }); @@ -64,7 +64,6 @@ impl Pipeline {                  source: wgpu::ShaderSource::Wgsl(std::borrow::Cow::Borrowed(                      include_str!("shader/quad.wgsl"),                  )), -                flags: wgpu::ShaderFlags::all(),              });          let pipeline = @@ -77,7 +76,7 @@ impl Pipeline {                      buffers: &[                          wgpu::VertexBufferLayout {                              array_stride: mem::size_of::<Vertex>() as u64, -                            step_mode: wgpu::InputStepMode::Vertex, +                            step_mode: wgpu::VertexStepMode::Vertex,                              attributes: &[wgpu::VertexAttribute {                                  shader_location: 0,                                  format: wgpu::VertexFormat::Float32x2, @@ -86,7 +85,7 @@ impl Pipeline {                          },                          wgpu::VertexBufferLayout {                              array_stride: mem::size_of::<layer::Quad>() as u64, -                            step_mode: wgpu::InputStepMode::Instance, +                            step_mode: wgpu::VertexStepMode::Instance,                              attributes: &wgpu::vertex_attr_array!(                                  1 => Float32x2,                                  2 => Float32x2, @@ -115,7 +114,7 @@ impl Pipeline {                                  operation: wgpu::BlendOperation::Add,                              },                          }), -                        write_mask: wgpu::ColorWrite::ALL, +                        write_mask: wgpu::ColorWrites::ALL,                      }],                  }),                  primitive: wgpu::PrimitiveState { @@ -135,20 +134,20 @@ impl Pipeline {              device.create_buffer_init(&wgpu::util::BufferInitDescriptor {                  label: Some("iced_wgpu::quad vertex buffer"),                  contents: bytemuck::cast_slice(&QUAD_VERTS), -                usage: wgpu::BufferUsage::VERTEX, +                usage: wgpu::BufferUsages::VERTEX,              });          let indices =              device.create_buffer_init(&wgpu::util::BufferInitDescriptor {                  label: Some("iced_wgpu::quad index buffer"),                  contents: bytemuck::cast_slice(&QUAD_INDICES), -                usage: wgpu::BufferUsage::INDEX, +                usage: wgpu::BufferUsages::INDEX,              });          let instances = device.create_buffer(&wgpu::BufferDescriptor {              label: Some("iced_wgpu::quad instance buffer"),              size: mem::size_of::<layer::Quad>() as u64 * MAX_INSTANCES as u64, -            usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, +            usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,              mapped_at_creation: false,          }); diff --git a/wgpu/src/settings.rs b/wgpu/src/settings.rs index dc06b82d..23b55904 100644 --- a/wgpu/src/settings.rs +++ b/wgpu/src/settings.rs @@ -12,7 +12,7 @@ pub struct Settings {      pub present_mode: wgpu::PresentMode,      /// The internal graphics backend to use. -    pub internal_backend: wgpu::BackendBit, +    pub internal_backend: wgpu::Backends,      /// The bytes of the font that will be used by default.      /// @@ -54,7 +54,7 @@ impl Settings {      pub fn from_env() -> Self {          Settings {              internal_backend: backend_from_env() -                .unwrap_or(wgpu::BackendBit::PRIMARY), +                .unwrap_or(wgpu::Backends::all()),              ..Self::default()          }      } @@ -64,7 +64,7 @@ impl Default for Settings {      fn default() -> Settings {          Settings {              present_mode: wgpu::PresentMode::Mailbox, -            internal_backend: wgpu::BackendBit::PRIMARY, +            internal_backend: wgpu::Backends::all(),              default_font: None,              default_text_size: 20,              text_multithreading: false, @@ -73,16 +73,16 @@ impl Default for Settings {      }  } -fn backend_from_env() -> Option<wgpu::BackendBit> { +fn backend_from_env() -> Option<wgpu::Backends> {      std::env::var("WGPU_BACKEND").ok().map(|backend| {          match backend.to_lowercase().as_str() { -            "vulkan" => wgpu::BackendBit::VULKAN, -            "metal" => wgpu::BackendBit::METAL, -            "dx12" => wgpu::BackendBit::DX12, -            "dx11" => wgpu::BackendBit::DX11, -            "gl" => wgpu::BackendBit::GL, -            "webgpu" => wgpu::BackendBit::BROWSER_WEBGPU, -            "primary" => wgpu::BackendBit::PRIMARY, +            "vulkan" => wgpu::Backends::VULKAN, +            "metal" => wgpu::Backends::METAL, +            "dx12" => wgpu::Backends::DX12, +            "dx11" => wgpu::Backends::DX11, +            "gl" => wgpu::Backends::GL, +            "webgpu" => wgpu::Backends::BROWSER_WEBGPU, +            "primary" => wgpu::Backends::PRIMARY,              other => panic!("Unknown backend: {}", other),          }      }) diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs index 65b2b7b0..2aaebe58 100644 --- a/wgpu/src/triangle.rs +++ b/wgpu/src/triangle.rs @@ -29,7 +29,7 @@ struct Buffer<T> {      label: &'static str,      raw: wgpu::Buffer,      size: usize, -    usage: wgpu::BufferUsage, +    usage: wgpu::BufferUsages,      _type: std::marker::PhantomData<T>,  } @@ -38,7 +38,7 @@ impl<T> Buffer<T> {          label: &'static str,          device: &wgpu::Device,          size: usize, -        usage: wgpu::BufferUsage, +        usage: wgpu::BufferUsages,      ) -> Self {          let raw = device.create_buffer(&wgpu::BufferDescriptor {              label: Some(label), @@ -85,7 +85,7 @@ impl Pipeline {                  label: Some("iced_wgpu::triangle uniforms layout"),                  entries: &[wgpu::BindGroupLayoutEntry {                      binding: 0, -                    visibility: wgpu::ShaderStage::VERTEX, +                    visibility: wgpu::ShaderStages::VERTEX,                      ty: wgpu::BindingType::Buffer {                          ty: wgpu::BufferBindingType::Uniform,                          has_dynamic_offset: true, @@ -101,7 +101,7 @@ impl Pipeline {              "iced_wgpu::triangle uniforms buffer",              device,              UNIFORM_BUFFER_SIZE, -            wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, +            wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,          );          let constant_bind_group = @@ -137,7 +137,6 @@ impl Pipeline {                  source: wgpu::ShaderSource::Wgsl(std::borrow::Cow::Borrowed(                      include_str!("shader/triangle.wgsl"),                  )), -                flags: wgpu::ShaderFlags::all(),              });          let pipeline = @@ -149,7 +148,7 @@ impl Pipeline {                      entry_point: "vs_main",                      buffers: &[wgpu::VertexBufferLayout {                          array_stride: mem::size_of::<Vertex2D>() as u64, -                        step_mode: wgpu::InputStepMode::Vertex, +                        step_mode: wgpu::VertexStepMode::Vertex,                          attributes: &wgpu::vertex_attr_array!(                              // Position                              0 => Float32x2, @@ -175,7 +174,7 @@ impl Pipeline {                                  operation: wgpu::BlendOperation::Add,                              },                          }), -                        write_mask: wgpu::ColorWrite::ALL, +                        write_mask: wgpu::ColorWrites::ALL,                      }],                  }),                  primitive: wgpu::PrimitiveState { @@ -203,13 +202,13 @@ impl Pipeline {                  "iced_wgpu::triangle vertex buffer",                  device,                  VERTEX_BUFFER_SIZE, -                wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, +                wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,              ),              index_buffer: Buffer::new(                  "iced_wgpu::triangle index buffer",                  device,                  INDEX_BUFFER_SIZE, -                wgpu::BufferUsage::INDEX | wgpu::BufferUsage::COPY_DST, +                wgpu::BufferUsages::INDEX | wgpu::BufferUsages::COPY_DST,              ),          }      } diff --git a/wgpu/src/triangle/msaa.rs b/wgpu/src/triangle/msaa.rs index c099d518..070d2d93 100644 --- a/wgpu/src/triangle/msaa.rs +++ b/wgpu/src/triangle/msaa.rs @@ -31,7 +31,7 @@ impl Blit {                  label: Some("iced_wgpu::triangle:msaa uniforms layout"),                  entries: &[wgpu::BindGroupLayoutEntry {                      binding: 0, -                    visibility: wgpu::ShaderStage::FRAGMENT, +                    visibility: wgpu::ShaderStages::FRAGMENT,                      ty: wgpu::BindingType::Sampler {                          comparison: false,                          filtering: false, @@ -55,7 +55,7 @@ impl Blit {                  label: Some("iced_wgpu::triangle::msaa texture layout"),                  entries: &[wgpu::BindGroupLayoutEntry {                      binding: 0, -                    visibility: wgpu::ShaderStage::FRAGMENT, +                    visibility: wgpu::ShaderStages::FRAGMENT,                      ty: wgpu::BindingType::Texture {                          sample_type: wgpu::TextureSampleType::Float {                              filterable: false, @@ -80,7 +80,6 @@ impl Blit {                  source: wgpu::ShaderSource::Wgsl(std::borrow::Cow::Borrowed(                      include_str!("../shader/blit.wgsl"),                  )), -                flags: wgpu::ShaderFlags::all(),              });          let pipeline = @@ -109,7 +108,7 @@ impl Blit {                                  operation: wgpu::BlendOperation::Add,                              },                          }), -                        write_mask: wgpu::ColorWrite::ALL, +                        write_mask: wgpu::ColorWrites::ALL,                      }],                  }),                  primitive: wgpu::PrimitiveState { @@ -232,7 +231,7 @@ impl Targets {              sample_count,              dimension: wgpu::TextureDimension::D2,              format, -            usage: wgpu::TextureUsage::RENDER_ATTACHMENT, +            usage: wgpu::TextureUsages::RENDER_ATTACHMENT,          });          let resolve = device.create_texture(&wgpu::TextureDescriptor { @@ -242,8 +241,8 @@ impl Targets {              sample_count: 1,              dimension: wgpu::TextureDimension::D2,              format, -            usage: wgpu::TextureUsage::RENDER_ATTACHMENT -                | wgpu::TextureUsage::SAMPLED, +            usage: wgpu::TextureUsages::RENDER_ATTACHMENT +                | wgpu::TextureUsages::TEXTURE_BINDING,          });          let attachment = diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index b60efd25..0e4a014a 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -45,7 +45,7 @@ impl Compositor {          let format = compatible_surface              .as_ref() -            .and_then(|surf| adapter.get_swap_chain_preferred_format(surf))?; +            .and_then(|surf| surf.get_preferred_format(&adapter))?;          let (device, queue) = adapter              .request_device( @@ -88,7 +88,7 @@ impl iced_graphics::window::Compositor for Compositor {      type Settings = Settings;      type Renderer = Renderer;      type Surface = wgpu::Surface; -    type SwapChain = wgpu::SwapChain; +    type SwapChain = ();      fn new<W: HasRawWindowHandle>(          settings: Self::Settings, @@ -121,10 +121,10 @@ impl iced_graphics::window::Compositor for Compositor {          width: u32,          height: u32,      ) -> Self::SwapChain { -        self.device.create_swap_chain( -            surface, -            &wgpu::SwapChainDescriptor { -                usage: wgpu::TextureUsage::RENDER_ATTACHMENT, +        surface.configure( +            &self.device, +            &wgpu::SurfaceConfiguration { +                usage: wgpu::TextureUsages::RENDER_ATTACHMENT,                  format: self.format,                  present_mode: self.settings.present_mode,                  width, @@ -136,13 +136,14 @@ impl iced_graphics::window::Compositor for Compositor {      fn draw<T: AsRef<str>>(          &mut self,          renderer: &mut Self::Renderer, -        swap_chain: &mut Self::SwapChain, +        _swap_chain: &mut Self::SwapChain, +        surface: &mut Self::Surface,          viewport: &Viewport,          background_color: Color,          output: &<Self::Renderer as iced_native::Renderer>::Output,          overlay: &[T],      ) -> Result<mouse::Interaction, iced_graphics::window::SwapChainError> { -        match swap_chain.get_current_frame() { +        match surface.get_current_frame() {              Ok(frame) => {                  let mut encoder = self.device.create_command_encoder(                      &wgpu::CommandEncoderDescriptor { @@ -150,13 +151,18 @@ impl iced_graphics::window::Compositor for Compositor {                      },                  ); +                let view = &frame +                    .output +                    .texture +                    .create_view(&wgpu::TextureViewDescriptor::default()); +                  let _ =                      encoder.begin_render_pass(&wgpu::RenderPassDescriptor {                          label: Some(                              "iced_wgpu::window::Compositor render pass",                          ),                          color_attachments: &[wgpu::RenderPassColorAttachment { -                            view: &frame.output.view, +                            view,                              resolve_target: None,                              ops: wgpu::Operations {                                  load: wgpu::LoadOp::Clear({ @@ -180,7 +186,7 @@ impl iced_graphics::window::Compositor for Compositor {                      &mut self.device,                      &mut self.staging_belt,                      &mut encoder, -                    &frame.output.view, +                    view,                      viewport,                      output,                      overlay, @@ -201,16 +207,16 @@ impl iced_graphics::window::Compositor for Compositor {                  Ok(mouse_interaction)              }              Err(error) => match error { -                wgpu::SwapChainError::Timeout => { +                wgpu::SurfaceError::Timeout => {                      Err(iced_graphics::window::SwapChainError::Timeout)                  } -                wgpu::SwapChainError::Outdated => { +                wgpu::SurfaceError::Outdated => {                      Err(iced_graphics::window::SwapChainError::Outdated)                  } -                wgpu::SwapChainError::Lost => { +                wgpu::SurfaceError::Lost => {                      Err(iced_graphics::window::SwapChainError::Lost)                  } -                wgpu::SwapChainError::OutOfMemory => { +                wgpu::SurfaceError::OutOfMemory => {                      Err(iced_graphics::window::SwapChainError::OutOfMemory)                  }              }, diff --git a/winit/src/application.rs b/winit/src/application.rs index c43eed11..0b0139e6 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -227,7 +227,7 @@ async fn run_instance<A, E, C>(      use iced_futures::futures::stream::StreamExt;      use winit::event; -    let surface = compositor.create_surface(&window); +    let mut surface = compositor.create_surface(&window);      let mut clipboard = Clipboard::connect(&window);      let mut state = State::new(&application, &window); @@ -370,6 +370,7 @@ async fn run_instance<A, E, C>(                  match compositor.draw(                      &mut renderer,                      &mut swap_chain, +                    &mut surface,                      state.viewport(),                      state.background_color(),                      &primitive,  | 
