From 533a2f8ae829c68a139fb30cec0df2c11f27818c Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 7 Sep 2021 23:24:22 +0200 Subject: [PATCH] call clear_texture in initialize_texture_memory with a single range at a time --- wgpu-core/src/command/mod.rs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/wgpu-core/src/command/mod.rs b/wgpu-core/src/command/mod.rs index c0bf917d87..c153c5a330 100644 --- a/wgpu-core/src/command/mod.rs +++ b/wgpu-core/src/command/mod.rs @@ -162,7 +162,7 @@ impl BakedCommands { device_tracker: &mut TrackerSet, texture_guard: &mut Storage, id::TextureId>, ) -> Result<(), DestroyedTextureError> { - let mut ranges = Vec::new(); + let mut ranges: Vec = Vec::new(); for texture_use in self.texture_memory_init_actions.drain(..) { let texture = texture_guard .get_mut(texture_use.id) @@ -227,20 +227,17 @@ impl BakedCommands { ); self.encoder.clear_texture( raw_texture, - &ranges - .iter() - .map(|r| wgt::ImageSubresourceRange { - aspect: wgt::TextureAspect::All, - base_mip_level: r.mip_range.start, - mip_level_count: NonZeroU32::new( - r.mip_range.end - r.mip_range.start, - ), - base_array_layer: r.layer_range.start, - array_layer_count: NonZeroU32::new( - r.layer_range.end - r.layer_range.start, - ), - }) - .collect::>(), + &wgt::ImageSubresourceRange { + aspect: wgt::TextureAspect::All, + base_mip_level: range.mip_range.start, + mip_level_count: NonZeroU32::new( + range.mip_range.end - range.mip_range.start, + ), + base_array_layer: range.layer_range.start, + array_layer_count: NonZeroU32::new( + range.layer_range.end - range.layer_range.start, + ), + }, ); } }