-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Some members of the Impeller team have done some performance benchmarking comparing Impeller vs Skia (@jonahwilliams and @dnfield ?) and overall feel that path handling performance in Impeller is not acceptable for release on Android.
Phrases like "needs significant improvement" and "acceptable performance" are intentionally vague. The purpose of this umbrella bug is to disambiguate by collecting evidence together and linking to other specific tasks which are theorized to solve trouble cases.
So the first order of business is to collect this evidence together (which may expand or contract over time). And once we identify a collection of trouble cases, we can hammer down these trouble cases and at least track overall progress.
Trouble cases may or may not involve tessellation performance. For example, if we remove generic tessellation altogether by employing stencil-then-cover and our trouble cases aren't improved enough to release on Android, we may need to come up with non-tessellation solutions to get us over the line.
Impeller having "acceptable" performance means that the overall perceived experience of switching from Skia to Impeller should be good for common usage. Unrealistic/esoteric performance comparisons are not useful blockers for release on Android (unless we have a reason to believe they inform realistic usage -- and are esoteric for the purpose of isolating the problem and reducing noise, like in the benchmarks, for example).
Documented trouble cases
To make judgements about how Impeller's path rendering shapes up, it's important to:
- Compare the overall experience of using Impeller with Skia (ideally by collecting side-by-side videos from actual target devices).
- Collect artifacts that inform us as to why things are slow. Especially cases where the experience of using Impeller is visibly worse on devices with decent hardware. However, if Impeller spends significantly more energy churning frames than Skia, then that's going to adversely affect battery life on high end phones and result in us dropping frames on low end phones.
Unchecked box = untriaged/missing investigation.
- [Impeller] performance issue on specific lottie files. #141961
- Impeller<->Skia comparison videos: [Impeller] ☂️ Path drawing performance needs significant improvement. #143077 (comment)
- Analysis / Impeller CPU flamegraph: [Impeller] ☂️ Path drawing performance needs significant improvement. #143077 (comment)
- static_path_tessellation_perf__timeline_summary / dynamic_path_tessellation_perf__timeline_summary
- Impeller<->Skia comparison videos: [Impeller] ☂️ Path drawing performance needs significant improvement. #143077 (comment)
- Analysis / Impeller CPU flamegraph: [Impeller] ☂️ Path drawing performance needs significant improvement. #143077 (comment)
- Painting app: https://github.com/Mairramer/impeller_example/tree/master
- Impeller<->Skia comparison videos:
None - Analysis / Impeller CPU flamegraph:
None
- Impeller<->Skia comparison videos:
- customer:money -- General sense is that Impeller is slower (?).
- Impeller<->Skia comparison videos:
None - Analysis: We have a document which links to a trace that is no longer available and does not document how much time is being spent on tessellation.
- Impeller<->Skia comparison videos:
- [Impeller] Tessellation overhead causes regression on some animations. #134432
- Impeller<->Skia comparison videos: Videos of Impeller, but no comparison to Skia.
- Analysis / Impeller CPU flamegraph: 67%
FillPathGeometry::GetPositionBuffer-> 45%Tessellator::Tessellate+ 20%Path::CreatePolyline[Impeller] Tessellation overhead causes regression on some animations. #134432 (comment)