Mobile/BostonBrainstorm/PanZoom
From MozillaWiki
< Mobile | BostonBrainstorm
Panning &Zooming
- Potential Causes
- Root cause: Texture upload (we do it synchronously, and too much of it)
- Causes of too much texture upload:
- Pixel-aligned scrolling - we need to verify that we are doing the correct thing here. (if not, it means we will constantly redraw the whole page when scrolling)
- Display list issues where we're not able to use retained layers, because of the frames in the retained layer changing. (unsure, but same consequence as above - whole page redraws while scrolling)
- Short Term:
- Figure out why we're repainting all the time
- Determine why desktop is better (zoom?)
- We currently upload the entire displayport. Why can't we be more intelligent about what we do here? (tile prioritization?)
- Eideticker (check panning jank tests, write more/better tests)
- Long Term (8 months):
- Fix the issues identified
- Special display items (images, gradients)
- SurfaceTexture?
- Things that can be done tomorrow:
- Check pixel alignment test skip line
- Check out what the status of Benwa's tile priotization patches are.
- Check with Matt Woodrow to see if dlbi will help us with repainting all the time
- Things that could be done this week:
- Invalidation tests
- Is this still important?
- Yes. We are currently janky on panning and this may be causing us to lose/not retain users.
- How does this relate to ADIs?
- More people will use the browser if it's better. If we do well here, we can vastly surpass performance on the gingerbread stock browser, the ICS/Jellybean stock browser, Chrome, and perhaps even iOS Safari.
- Relevant bugs:
bug 751629 - Split tile upload into multiple transactions (upload progressively/asynchronously)
bug 681192 - Give scrolling APIs a flexible "allowed scroll destination range" and use it inside Gecko
bug 539356 - Replace Invalidate() calls in reflow with display list analysis
bug 771154 - Large amount of over painting on some pages on fennec
bug 781516 - Fennec invalidation regression on Nightly