From 93e309f491a8941bafb919e75d660e65071475f4 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 3 Nov 2022 05:06:09 +0100 Subject: Reuse last set pipeline for `triangle` in `iced_wgpu` --- wgpu/src/triangle.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'wgpu/src/triangle.rs') 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; } }; -- cgit