Fennec/NativeUI/checkerboarding
From MozillaWiki
Contents
Intro
- Where are we bad right now?/What are the biggest problems? (Erin can lead this?)
- Zoom in (dbl tap, pinch 2 zoom)
- Zoom out (dbl tap, pinch 2 zoom)
- Scrolling
- Panning
Where do we spend our time?
- Zoomed in panning on CNN.com: http://bit.ly/HdccVU
- 43ms PresShell::Paint
- 6ms displaylist building
- 4ms compute visibility
- 14ms drawthebeslayer (9ms DrawBackgroundImage)
- 6ms buffer rotation
- 43ms PresShell::Paint
- Zoomed in panning on nytimes.com: http://bit.ly/HdceNy
- 34ms PresShell::Paint
- 5ms displaylist building
- 2ms compute visibility
- 10ms drawthebeslayer (4ms text drawing, 2ms DrawBackgroundImage)
- 3ms buffer rotation
- 8ms waiting for compositor
- 4ms ContainerState::ProcessDisplayItems
- 34ms PresShell::Paint
- Zoom out on nytimes.com: http://bit.ly/HjC3eD (409ms paint) http://bit.ly/HIMqas (371ms paint)
- mostly drawing text. We run into bug 742134
- Painting
- Upload/Syncing with compositing thread
- Layout
- Other (bug 742060, bug 742128)
Work in progress
- Fixing up touch overhead at the beginning of pans - bug 740883 and dependent bugs (kats)
- TiledThebesLayer bug 739679 (bgirard) - This will help remove buffer rotation overhead and will make it so we can resize the display port with less cost.
- 16 bit drawing bug 733607 (roc)
Todo
Front end
- Slow down panning bug 742115
- Adapt DisplayPort control for TiledThebesLayer bug 737510
- Lower/Remove Viewport:Change observer overhead bug 742128
- Round zoom level to avoid churning glyph cache?
GFX
- Improve text drawing bug 742134 (This needs root causing still) (jfkthame)
- Make sure we're drawing background images efficiently bug 735895
- Cache tiles at different zoom levels/Don't discard visible tiles (bgirard)
Layout
- Unnecessary copies during image painting bug 733941
- Avoid compositing basic layers (this doesn't show up much on profiles yet but is still a waste) bug 735303
- ComputeVisibility slowness bug 735893
- DisplayList construction bug 735898
Other ideas?
- Building database of common pages/gestures
- On-demand/interruptable drawing (depends somewhat on tiles)
Pan/Zoom Jank
- Our only known source of jank is texture upload.
- Currently we should never jank during zoom because we do not do any uploads then.
- Kats recently started drawing on double tap out. We introduced some jank during that operation. bug 742366
If we need to, it should be possible to postpone the upload of until the end of zoom operation, or use another technique to bound the time we spend uploading.
Work in progress
- bug 730718 EGLImage (pcwalton)
- bug 729538 gralloc (bgirardish)
Correctness Bugs
- bug 737367 Runfield rotation
- bug 741692 Black flash
QA
- Would be good to get some subjective comparisons of checkerboard with us vs. XUL
Eideticker
- Needs to use a page other than http://taskjs.org/
- See bug 742086 to track this (with some initial ideas)
- Native browser on Gingerbread won't ever checkerboard it just paints slower
- XUL and native fennec run the page at different zoom levels and scroll to different locations
- Eideticker is useful for cross-browser comparisons, but should we consider using other/methods tools (i.e. ones that don't require specialized hardware) for testing performance as well?
- Tracking FPS of scroll & zoom would be most useful.
When are we done?
- What criteria do we have for being good enough?
- Not checkerboarding too much!