-
-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Incremental rendering #811
Conversation
Benchmark for 3b7aa99Click to view benchmark
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #811 +/- ##
==========================================
+ Coverage 75.14% 75.94% +0.80%
==========================================
Files 201 202 +1
Lines 21664 22760 +1096
==========================================
+ Hits 16279 17286 +1007
- Misses 5385 5474 +89 ☔ View full report in Codecov by Sentry. |
better idea: have a secondary canvas in which to render all the mutated layers with a clip of the affected area, and then just write the secondary canvas to the main kinda inspired in vizia |
Benchmark for 9e5aaffClick to view benchmark
|
Benchmark for e8e8899Click to view benchmark
|
…ast frame for the dirty area
Benchmark for cd97ed5Click to view benchmark
|
Benchmark for 31ece18Click to view benchmark
|
Benchmark for 2ca95c5Click to view benchmark
|
Benchmark for fa23858Click to view benchmark
|
Benchmark for 38cfa4eClick to view benchmark
|
Benchmark for 15145cbClick to view benchmark
|
Benchmark for 48c3b0aClick to view benchmark
|
Benchmark for 452e045Click to view benchmark
|
|
Benchmark for acd6364Click to view benchmark
|
Benchmark for 8fa60d8Click to view benchmark
|
Closes #247
This PR adds incremental rendering support for Freya. Allowing to render only what has changed + what has been affected by the changes. This is a major improvement for rendering performance as Freya used to do full re-renders of the whole tree in every render frame, thus slowing down as the tree of nodes increased, even if only 1 small node changed.
To Do
[ ] Consider viewports to reduce the dirty area[ ] Usedashmap
forhashmaps/hashsets
currently wrapped inArc<Mutex<T>>
.Findings
freya-common
andfreya-node-state
intofreya-core
#815