bevy/crates
Patrick Walton 69b2ae871c
Don't reallocate work item buffers every frame. (#17684)
We were calling `clear()` on the work item buffer table, which caused us
to deallocate all the CPU side buffers. This patch changes the logic to
instead just clear the buffers individually, but leave their backing
stores. This has two consequences:

1. To effectively retain work item buffers from frame to frame, we need
to key them off `RetainedViewEntity` values and not the render world
`Entity`, which is transient. This PR changes those buffers accordingly.

2. We need to clean up work item buffers that belong to views that went
away. Amusingly enough, we actually have a system,
`delete_old_work_item_buffers`, that tries to do this already, but it
wasn't doing anything because the `clear_batched_gpu_instance_buffers`
system already handled that. This patch actually makes the
`delete_old_work_item_buffers` system useful, by removing the clearing
behavior from `clear_batched_gpu_instance_buffers` and instead making
`delete_old_work_item_buffers` delete buffers corresponding to
nonexistent views.

On Bistro, this PR improves the performance of
`batch_and_prepare_binned_render_phase` from 61.2 us to 47.8 us, a 28%
speedup.

![Screenshot 2025-02-04
135542](https://github.com/user-attachments/assets/b0ecb551-f6c8-4677-8e4e-e39aa28115a3)
2025-02-05 17:37:24 +00:00
..
bevy_a11y Add no_std Support to bevy_a11y (#17505) 2025-01-23 03:52:47 +00:00
bevy_animation Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_app Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_asset Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_audio Relationships (non-fragmenting, one-to-many) (#17398) 2025-01-18 22:20:30 +00:00
bevy_color Fixes #17508: bevy_color::Color constructor docs get docs matching underlying constructor (#17601) 2025-01-29 18:21:23 +00:00
bevy_core_pipeline Fix calculation of skybox rotation (#17476) 2025-01-28 05:27:22 +00:00
bevy_derive Bump Version after Release (#17176) 2025-01-06 00:04:44 +00:00
bevy_dev_tools Smarter testbeds (#17573) 2025-01-31 22:38:39 +00:00
bevy_diagnostic Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_dylib Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
bevy_ecs Improve docs for WorldQuery (#17654) 2025-02-03 22:13:42 +00:00
bevy_encase_derive Bump Version after Release (#17176) 2025-01-06 00:04:44 +00:00
bevy_gilrs Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_gizmos Move Resource trait to its own file (#17469) 2025-01-21 19:47:08 +00:00
bevy_gltf Fix Maya-exported rigs by not trying to topologically sort glTF nodes. (#17641) 2025-02-02 13:53:55 +00:00
bevy_image Image::get_color_at and Image::set_color_at: Support 16-bit float values (#17550) 2025-01-31 00:36:11 +00:00
bevy_input added Hash to MouseScrollUnit; (#17538) 2025-01-26 22:24:50 +00:00
bevy_input_focus Refactored ComponentHook Parameters into HookContext (#17503) 2025-01-23 02:45:24 +00:00
bevy_internal Add support for specular tints and maps per the KHR_materials_specular glTF extension. (#14069) 2025-01-26 20:38:46 +00:00
bevy_log Move Resource trait to its own file (#17469) 2025-01-21 19:47:08 +00:00
bevy_macro_utils Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
bevy_math feat: impl Ease for Isometry[2/3]d (#17545) 2025-02-02 15:07:35 +00:00
bevy_mesh Implementing Reflect on *MeshBuilder types (#17600) 2025-02-03 21:53:51 +00:00
bevy_mikktspace Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
bevy_pbr Don't reallocate work item buffers every frame. (#17684) 2025-02-05 17:37:24 +00:00
bevy_picking Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_platform_support Improve ergonomics of platform_support's Instant (#17577) 2025-02-02 15:50:48 +00:00
bevy_ptr Update safety docs for Ptr::assert_unique (#17394) 2025-01-16 03:25:19 +00:00
bevy_reflect Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_remote Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_render Don't reallocate work item buffers every frame. (#17684) 2025-02-05 17:37:24 +00:00
bevy_scene Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_sprite Fix text-2d. (#17674) 2025-02-04 21:32:14 +00:00
bevy_state Fix link to states example (#17595) 2025-01-29 21:44:55 +00:00
bevy_tasks Move spin to bevy_platform_support out of other crates (#17470) 2025-01-23 05:27:02 +00:00
bevy_text Improve TextSpan docs (#17415) 2025-02-03 21:36:52 +00:00
bevy_time Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_transform Warnings and docs for exponential denormalization in rotate functions (alternative to #17604) (#17646) 2025-02-03 22:02:12 +00:00
bevy_ui Improve TextSpan docs (#17415) 2025-02-03 21:36:52 +00:00
bevy_utils Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_window Move spin to bevy_platform_support out of other crates (#17470) 2025-01-23 05:27:02 +00:00
bevy_winit Fix cursor hotspot out of bounds when flipping (#17571) 2025-02-02 18:22:34 +00:00