Mobile/AsyncSubframePanning: Difference between revisions
< Mobile
Jump to navigation
Jump to search
(→Step 1) |
Msreckovic (talk | contribs) (→6/4/13) |
||
| Line 107: | Line 107: | ||
** hit testing (in progress, owned by BenWa) | ** hit testing (in progress, owned by BenWa) | ||
** creating and managing APZCs from the frame loader builder (need owner) | ** creating and managing APZCs from the frame loader builder (need owner) | ||
===6/11/13=== | |||
* Getting Jim and Brian up to speed, explaining how things work: | |||
** Going through some of our "older" bugs, figuring out the history of how this came to be. | |||
** C++ version that is now being used in Android, almost working completely | |||
** In depth discussion on what the pieces are, how they work together | |||
* Jim & Brian will work on getting single APZC without subframes on Metro. Primarily Brian. | |||
* The work that Kats, BenWa, AJones are doing should then just click in place and give us subframe APZC on Metro as well. | |||
* GTest needs to work, run-time object issue, doesn't reproduce anymore, so hoping it will stick now. | |||
Revision as of 14:28, 11 June 2013
Goals
Phase 1
- land in 23 (not likely)
- B2G subframe scrolling
- Performance is
- as good as main frame
- subframes can't zoom
- seamed scrolling
Phase 2
- Fennec subframe scrolling
- seamless scrolling
Not doing
- scroll indicators are a non-goal
- not fixing page drift
- concurrently scrolling parents and ancestors
- subframe zooming
Plan
- To dos
- merge B2G APZC into fennec
- multiple display ports
- bind multiple display ports
- hit detection
- transform equation cleanup
- unit tests
- tuning/profiling
- concurrently scrolling subframes
Design
Step 1
Performed in Layout module, Main Gecko thread
- (Bug 866232) Layout (FrameLayerBuilder et al.) builds an initial simple layer tree with the position of the subframes tagged to the best fitting layer
- (See diagram for sample page & layer tree)
Step 2
Performed in the compositor's main thread
- Layer tree update/transaction is received by the compositor.
- Touch event is delivered at (6,51).
- (Bug 775452) Hit detection is performed on a layer tree in reverse depth-first order and matches 1st subframe.
- APZC decides of the appropriate buffer/pre-rendering and sends an IPC message to the main thread with an updated FrameMetrics/display port request.
- (See diagram for sample page & layer tree)
Step 3
Performed in Layout module, Main Gecko thread
- Display port is requested on the subframe in Layout
- (Bug 864447) Layer tree is grown to make room for a layer of the 1st subframe.
- Subframe is painted with a display port allowing Async scrolling. FrameMetrics are updated.
- (See diagram for sample page & layer tree)
Step 4
Performed in the compositor's main thread
- (Bug 866265) APZC can now perform Async panning on new sublayer.
Step 5
- After timeout APZC resets FrameMetrics/display port on the subframe removing the display port, the layer and releasing the memory usage.
Notes and diagram
Bugs
Tracking bug for async subframe scrolling: bug 775452
24 Total; 0 Open (0%); 24 Resolved (100%); 0 Verified (0%);
Tracking bug for allowing Fennec to use APZC: bug 776030
75 Total; 2 Open (2.67%); 71 Resolved (94.67%); 2 Verified (2.67%);
Meetings
4/26/13
- initial meeting, created phases, goals and overall plan
5/21/13
- Chris will take the display port work
5/28/13
- Kats put up patch for disambiguated point classes
- will continue propegating the use of the classes through the
- should be up for review this week
- Chris should start on display ports per scroll frame this week
6/4/13
- Kats
- propagating type changes to frame metrics and APZC code
- BenWa
- unit tests
- hit testing
- ajones
- multiple display ports
- code already largely supports it
- does metro need subframe scrolling?
- next items:
- hit testing (in progress, owned by BenWa)
- creating and managing APZCs from the frame loader builder (need owner)
6/11/13
- Getting Jim and Brian up to speed, explaining how things work:
- Going through some of our "older" bugs, figuring out the history of how this came to be.
- C++ version that is now being used in Android, almost working completely
- In depth discussion on what the pieces are, how they work together
- Jim & Brian will work on getting single APZC without subframes on Metro. Primarily Brian.
- The work that Kats, BenWa, AJones are doing should then just click in place and give us subframe APZC on Metro as well.
- GTest needs to work, run-time object issue, doesn't reproduce anymore, so hoping it will stick now.

