ZIm/crates
Mikayla Maki c27dd57a48
Make more performance improvements to GPUI 2 (#3664)
In the 3 charts below, "window draw" has 3 major subroutines. Request
layout, where we walk over the tree and have everything talk to the
layout engine initially. Compute layout, where we have the layout engine
actually do the layout, and then paint, where we use the computed bounds
to populate the scene.


![image_720](https://github.com/zed-industries/zed/assets/1789/d2225389-865f-4c8a-9452-9f611da64dcf)

Things are moving quickly so before/after comparisons are tough. In the
graph above, green bars are from a commit actually pre-dates a merge of
master which increased the complexity of layout. The red bars represent
the state of the world after this PR. Note how we improve the
performance of `paint`.

Improvements:

- Not moving `self` in `Element::paint`. This was moving from the heap
to the stack and imposing a big cost. This is the biggest win in this
PR.
- We got some minor wins by making the stacking order a bigger smallvec
of u8 instead of u32.
- A big win that doesn't show up in this chart is avoiding a double
render of the editor when autoscrolling by never pushing notification
effects or marking the window dirty when notifying during a window draw.

Release Notes:

- N/A
2023-12-14 16:45:58 -08:00
..
activity_indicator
activity_indicator2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
ai Add gpt-4-1106-preview model 2023-11-14 08:28:57 -05:00
ai2 WIP 2023-12-05 19:27:15 +01:00
assistant Add some text to clarify no api key state 2023-11-30 11:20:51 -05:00
assistant2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
audio
audio2 Remove the 2s from source code 2023-11-02 10:55:02 -07:00
auto_update WIP: 2023-11-17 12:54:16 -08:00
auto_update2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
breadcrumbs
breadcrumbs2 Show the correct outline when clicking on a breadcrumb 2023-12-11 14:01:16 +01:00
call Add timestamp delta to telemetry events 2023-11-19 21:52:28 -05:00
call2 Revert "Decouple workspace from call (#3380)" 2023-12-04 17:05:44 -08:00
channel Set up UI to allow dragging a channel to the root 2023-10-25 15:39:02 +02:00
channel2 Start changing Avatar to use URI 2023-12-12 11:27:40 -05:00
cli
client Disable instance handshake in dev builds 2023-12-04 09:16:04 -05:00
client2 Finish fixing up Avatar using URI 2023-12-12 11:49:04 -05:00
clock
collab collab 0.31.0 2023-12-13 12:39:29 -05:00
collab2 Start changing Avatar to use URI 2023-12-12 11:27:40 -05:00
collab_ui Pass a new query parameter into the search 2023-11-17 21:40:56 +02:00
collab_ui2 Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 16:56:36 -07:00
collections Use FxHashMap and FxHashSet in hot code paths 2023-12-12 13:35:22 +01:00
command_palette Start out Copilot2; 2023-12-05 14:57:20 +01:00
command_palette2 fix modal exchange (#3620) 2023-12-12 21:30:34 -07:00
component_test
context_menu
copilot Fix assertions now that we use different hash functions 2023-12-12 14:59:51 +01:00
copilot2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
copilot_button
copilot_button2 Remove cx param 2023-12-04 23:35:31 +00:00
db Change from try (reserved keyword) to maybe 2023-10-25 07:10:21 -07:00
db2 Remove the 2s from source code 2023-11-02 10:55:02 -07:00
diagnostics Exclude gitignored files' diagnostics from project panel and its indicator. 2023-11-30 15:46:30 +02:00
diagnostics2 Attempt to remove the dangeous element focus API 2023-12-12 15:07:27 +02:00
drag_and_drop
editor Port to gpui1 2023-12-11 12:28:22 +02:00
editor2 Rename draw2 -> draw_and_update_state 2023-12-14 17:20:27 -07:00
feature_flags
feature_flags2 Inviting/Responding/Creating Channels... etc. 2023-11-28 22:47:04 -07:00
feedback Use release channel display name for feedback 2023-12-12 17:29:37 -05:00
feedback2 Use bitflags to hold error states 2023-12-14 17:22:13 -05:00
file_finder Trim file_finder input queries 2023-11-30 16:05:45 +02:00
file_finder2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
fs Revert unnecessary style changes 2023-10-12 16:17:41 +03:00
fs2 port rope2 to zed2 2023-11-03 12:15:23 -04:00
fsevent
fuzzy Ignore history items' paths when matching search queries 2023-10-09 23:14:32 +03:00
fuzzy2 Start on wiring up render_parsed_markdown 2023-11-24 17:28:59 +01:00
git
git3 git -> git3 2023-11-02 19:18:01 -06:00
go_to_line
go_to_line2 Fix opening GoToLine from Command 2023-12-12 20:46:27 -07:00
gpui Implement most core actions 2023-11-14 00:06:33 -08:00
gpui2 Merge branch 'main' into perf-2 2023-12-14 16:39:10 -08:00
gpui2_macros Add new drag API 2023-12-13 13:40:19 -08:00
gpui_macros Suppress unused vars warning generated by gpui macro 2023-11-04 13:54:37 +02:00
install_cli
install_cli2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
journal
journal2 please work 2023-11-18 10:46:35 -08:00
language Fix eslint diagnostics by passing worktree root during workspace init 2023-11-30 11:38:16 +02:00
language2 Pass proper theme colors for inlays and suggestions 2023-12-06 21:48:39 +02:00
language_selector
language_selector2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
language_tools Reduce max log lines, clean log buffers better 2023-10-17 21:47:21 +03:00
live_kit_client Bump livekit client 2023-12-13 10:47:32 -05:00
live_kit_client2 Bump livekit client 2023-12-13 10:47:32 -05:00
live_kit_server Fix notifications for membership changes too 2023-10-19 23:05:06 -06:00
lsp Declare more supported client capabilities 2023-11-30 12:22:23 +02:00
lsp2 Port to gpui2 2023-11-30 13:07:47 +02:00
media
menu
menu2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
multi_buffer Extract multi_buffer module out of editor (#3170) 2023-10-25 19:31:47 +02:00
multi_buffer2 Get workspace compiling with new event emitters 2023-11-08 19:29:00 -08:00
node_runtime Upgrade async-compression dep 2023-12-06 14:29:09 -08:00
notifications Load more notifications when scrolling down 2023-10-22 17:10:21 +02:00
notifications2 Add notifications2 2023-11-08 21:23:31 -08:00
outline
outline2 Focus editor when confirming outline item 2023-12-11 14:18:46 +01:00
picker
picker2 Port project_symbols (#3634) 2023-12-13 14:13:25 -07:00
plugin
plugin_macros
plugin_runtime
prettier Clear failed installation task when error threshold gets exceeded 2023-11-29 10:58:22 +02:00
prettier2 Port to gpui2 2023-11-29 11:52:26 +02:00
project Rework the way project panel auto reveals entries 2023-12-12 11:38:51 +02:00
project2 zed2 notification panel (#3603) 2023-12-12 18:04:47 -05:00
project_panel Add tests 2023-12-12 13:34:46 +02:00
project_panel2 Enable dragging from project panel to panes 2023-12-14 13:20:48 -08:00
project_symbols
project_symbols2 Port project_symbols 2023-12-13 13:43:39 -07:00
quick_action_bar Add "Toggle Inlay Hints" quick action (#3520) 2023-12-06 16:14:39 -05:00
quick_action_bar2 buffer search: Fix up rough edges 2023-12-07 12:52:34 +01:00
recent_projects
recent_projects2 collab_ui: Wire up project picker 2023-12-13 12:53:41 -08:00
refineable Generalize Refineable derive macro to derive arbitrary traits on the refinement type 2023-11-09 13:23:31 -08:00
rich_text Account for markdown styling in mentions offset calculation. 2023-10-23 12:50:57 +02:00
rich_text2 Start work on rendering formatted chat messages 2023-12-08 15:44:27 -08:00
rope Port buffer reload bug fixes back to gpui1 crates 2023-11-16 16:03:14 -08:00
rope2 Fix race conditions and bugs in Buffer::reload 2023-11-16 16:03:14 -08:00
rpc Port to gpui1 2023-12-11 12:28:22 +02:00
rpc2 Finalize the command 2023-12-11 12:28:22 +02:00
search Always open new project search view workspace::NewSearch action 2023-12-11 13:11:07 +02:00
search2 Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 16:56:36 -07:00
semantic_index Use 'any-match?' predicate in elixir embedding query 2023-11-27 15:06:20 -08:00
semantic_index2 Port semantic_index to gpui2 2023-12-05 15:38:36 +01:00
settings
settings2 Merge branch 'main' into vim2 2023-12-11 09:38:23 -07:00
snippet
sqlez WIP 2023-11-16 10:40:02 +02:00
sqlez_macros
story Extract Story into separate story crate (#3378) 2023-11-21 13:42:00 -05:00
storybook2 Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 14:16:59 -07:00
sum_tree
terminal
terminal2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
terminal_view Ignore excluded files on worktree entry refresh 2023-12-05 12:30:29 +02:00
terminal_view2 Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 16:56:36 -07:00
text Don't depend on gpui2 in text 2023-11-03 14:53:08 +01:00
text2 port rope2 to zed2 2023-11-03 12:15:23 -04:00
theme Set up UI to allow dragging a channel to the root 2023-10-25 15:39:02 +02:00
theme2 Use editor.foreground from VS Code for the editor foreground 2023-12-14 17:30:37 -05:00
theme_importer Use editor.foreground from VS Code for the editor foreground 2023-12-14 17:30:37 -05:00
theme_selector
theme_selector2 Restore namespace parameter to actions! 2023-12-09 15:18:31 -07:00
ui2 Don't move in paint 2023-12-14 15:15:18 -07:00
util Begin porting the PaneAxis element 2023-12-07 17:16:19 -08:00
vcs_menu vcs_menu: Fix a circular view handle in modal picker. 2023-10-25 18:34:14 +02:00
vcs_menu2 Vcs menu2 (#3648) 2023-12-14 12:36:53 +01:00
vim hah, oops 2023-12-12 18:54:35 -07:00
vim2 And restore the command palette spawn behaviour 2023-12-12 19:27:09 -07:00
welcome Checkpoint 2023-10-23 11:06:58 +02:00
welcome2 Fix vim toggle on welcome 2023-12-12 19:03:54 -07:00
workspace Rework the way project panel auto reveals entries 2023-12-12 11:38:51 +02:00
workspace2 Make more performance improvements to GPUI 2 (#3664) 2023-12-14 16:45:58 -08:00
xtask
zed v0.118.x dev 2023-12-13 12:53:41 -08:00
zed-actions Port journal to GPUI2 2023-10-28 11:37:25 -04:00
zed2 Return include warnings toggle to the diagnostics panel 2023-12-14 10:00:31 +02:00
zed_actions2 Clear out easy todo!()s 2023-12-11 11:00:55 -07:00