diff options
author | 2024-04-07 18:45:30 +0200 | |
---|---|---|
committer | 2024-04-07 18:45:48 +0200 | |
commit | 288f62bfb691a91e01b9ddbce9dbdc560ee9036a (patch) | |
tree | 6744614d18c7b53046c37d4c045b9df1ffe947f0 /wgpu/src/triangle.rs | |
parent | 13289dbd1933e7d7a0b21cffd197813f8f6f7fc0 (diff) | |
download | iced-288f62bfb691a91e01b9ddbce9dbdc560ee9036a.tar.gz iced-288f62bfb691a91e01b9ddbce9dbdc560ee9036a.tar.bz2 iced-288f62bfb691a91e01b9ddbce9dbdc560ee9036a.zip |
Share `msaa::Blit` texture between multiple windows
Diffstat (limited to 'wgpu/src/triangle.rs')
-rw-r--r-- | wgpu/src/triangle.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs index 06c0ef02..98ba41b3 100644 --- a/wgpu/src/triangle.rs +++ b/wgpu/src/triangle.rs @@ -184,8 +184,16 @@ impl Pipeline { belt: &mut wgpu::util::StagingBelt, storage: &mut Storage, items: &[Item], - projection: Transformation, + scale: Transformation, + target_size: Size<u32>, ) { + let projection = if let Some(blit) = &mut self.blit { + blit.prepare(device, encoder, belt, target_size) * scale + } else { + Transformation::orthographic(target_size.width, target_size.height) + * scale + }; + for item in items { match item { Item::Group { @@ -233,13 +241,11 @@ impl Pipeline { pub fn render( &mut self, - device: &wgpu::Device, encoder: &mut wgpu::CommandEncoder, target: &wgpu::TextureView, storage: &Storage, start: usize, batch: &Batch, - target_size: Size<u32>, bounds: Rectangle, screen_transformation: Transformation, ) -> usize { @@ -274,13 +280,11 @@ impl Pipeline { }); render( - device, encoder, target, self.blit.as_mut(), &self.solid, &self.gradient, - target_size, bounds, items, ); @@ -294,20 +298,17 @@ impl Pipeline { } fn render<'a>( - device: &wgpu::Device, encoder: &mut wgpu::CommandEncoder, target: &wgpu::TextureView, mut blit: Option<&mut msaa::Blit>, solid: &solid::Pipeline, gradient: &gradient::Pipeline, - target_size: Size<u32>, bounds: Rectangle, group: impl Iterator<Item = (&'a Layer, &'a [Mesh], Transformation)>, ) { { let (attachment, resolve_target, load) = if let Some(blit) = &mut blit { - let (attachment, resolve_target) = - blit.targets(device, target_size.width, target_size.height); + let (attachment, resolve_target) = blit.targets(); ( attachment, |