diff options
author | 2022-11-03 05:06:09 +0100 | |
---|---|---|
committer | 2022-11-03 05:06:09 +0100 | |
commit | 93e309f491a8941bafb919e75d660e65071475f4 (patch) | |
tree | 642954d963667d001c3a9fbf4fb7a6b216a58f1e /wgpu/src/triangle.rs | |
parent | 99cf98971dae22ae65adb2104c5a3eec578649f1 (diff) | |
download | iced-93e309f491a8941bafb919e75d660e65071475f4.tar.gz iced-93e309f491a8941bafb919e75d660e65071475f4.tar.bz2 iced-93e309f491a8941bafb919e75d660e65071475f4.zip |
Reuse last set pipeline for `triangle` in `iced_wgpu`
Diffstat (limited to 'wgpu/src/triangle.rs')
-rw-r--r-- | wgpu/src/triangle.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs index 28051edf..6e64e189 100644 --- a/wgpu/src/triangle.rs +++ b/wgpu/src/triangle.rs @@ -186,6 +186,7 @@ impl Pipeline { let mut num_solids = 0; let mut num_gradients = 0; + let mut last_is_solid = None; for (index, mesh) in meshes.iter().enumerate() { let clip_bounds = (mesh.clip_bounds * scale_factor).snap(); @@ -199,17 +200,35 @@ impl Pipeline { match mesh.style { mesh::Style::Solid(_) => { + if !last_is_solid.unwrap_or(false) { + self.pipelines + .solid + .set_render_pass_pipeline(&mut render_pass); + + last_is_solid = Some(true); + } + self.pipelines.solid.configure_render_pass( &mut render_pass, num_solids, ); + num_solids += 1; } mesh::Style::Gradient(_) => { + if last_is_solid.unwrap_or(true) { + self.pipelines + .gradient + .set_render_pass_pipeline(&mut render_pass); + + last_is_solid = Some(false); + } + self.pipelines.gradient.configure_render_pass( &mut render_pass, num_gradients, ); + num_gradients += 1; } }; |