| 893 | } |
| 894 | if let Some(new_capacity) = self |
| 895 | .shrink_indices |
| 896 | .tick(self.index_capacity_bytes as usize, UI_MIN_INDEX_BYTES) |
| 897 | { |
| 898 | let new_capacity = align_buffer_bytes(new_capacity); |
| 899 | if let Some(buffer) = self.index_buffer.take() { |
| 900 | self.index_buffer = Some(shrink_buffer_preserving( |
| 901 | device, |
| 902 | queue, |
| 903 | &buffer, |
| 904 | "perro_ui_indices", |
| 905 | new_capacity as u64, |
| 906 | wgpu::BufferUsages::INDEX |
| 907 | | wgpu::BufferUsages::COPY_DST |
| 908 | | wgpu::BufferUsages::COPY_SRC, |
| 909 | )); |
| 910 | } |
| 911 | self.index_capacity_bytes = new_capacity as u64; |
| 912 | self.indices |
| 913 | .shrink_to(new_capacity / std::mem::size_of::<u32>()); |
| 914 | } |
| 915 | if self.used_since_shrink_tick { |
| 916 | self.used_since_shrink_tick = false; |
| 917 | self.supersample_idle_ticks = 0; |
| 918 | return; |
| 919 | } |