Confirmed users
523
edits
No edit summary |
|||
| (24 intermediate revisions by 5 users not shown) | |||
| Line 1: | Line 1: | ||
== Intro == | == Intro == | ||
* Where are we bad right now?/What are the biggest problems? (Erin can lead this?) | * Where are we bad right now?/What are the biggest problems? (Erin can lead this?) | ||
#Zoom in (dbl tap, pinch 2 zoom) | #Zoom in (dbl tap, pinch 2 zoom) | ||
#Zoom out (dbl tap, pinch 2 zoom) | #Zoom out (dbl tap, pinch 2 zoom) | ||
| Line 10: | Line 6: | ||
#Panning | #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 | |||
# 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 | |||
# 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== | ==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 [https://bugzilla.mozilla.org/show_bug.cgi?id=742086 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! | |||