Fennec/NativeUI/checkerboarding

From MozillaWiki
Jump to: navigation, search

Intro

  • Where are we bad right now?/What are the biggest problems? (Erin can lead this?)
  1. Zoom in (dbl tap, pinch 2 zoom)
  2. Zoom out (dbl tap, pinch 2 zoom)
  3. Scrolling
  4. Panning

Where do we spend our time?

  1. 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
  2. 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
  3. Zoom out on nytimes.com: http://bit.ly/HjC3eD (409ms paint) http://bit.ly/HIMqas (371ms paint)



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

Correctness Bugs

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!