Changes to FrameMetrics and progressive tiling caused ReusableTileStoreOGL
to basically not work anymore. Refactor to provide the same function as it did
previously taking into account the platform changes.
The testing framework doesn't react well to paints not coming in synchronously.
Disable progressive tile painting when a shadow target is set on the layer
manager for now.
Add a function to LayerManagerOGL that can compute how much of the last
rendered area was incomplete (i.e. is pending update when progressive tile
drawing is enabled).
When rendering progressively, make sure that any previously visible area that
is still visible is updated at the same time. This helps maintain visual
coherency on pages that invalidate previously visible areas while scrolling,
and when losing layers between updates.
This supersedes the previous method of only doing progressive updates while
scrolling.
FrameMetrics changed at some point so that the content rect and scroll offset
are stored pre-multiplied by the render resolution. The display-port calculation
in this function appears to have always been wrong(?)
Now that the region can be more complicated due to tile prioritisation, the
previous code for draw order doesn't work as intended. Robustify/simplify the
code by making it region-based.
When progressively updating tiles, prioritise tiles that intersect with the
current viewport before off-screen tiles. New content is still prioritised
over stale content.
This is a rollup of the following patches
- Change the interpretation of FrameMetrics.mZoom to a "resolution-indepedent zoom", instead of a resolution-depedent scale factor. r=roc
- Remove mention of "meta" from TabChild. r=roc
- Remove some useless logging. r=roc
- Tag FrameMetrics with its composition bounds at paint time. r=roc
- Add a helper to calculate the render resolution for a FrameMetrics. r=roc
- Add a helper to compute the approximate CSS dimensions a FrameMetrics will cover during composition. r=roc
- BrowserElementScrolling doesn't actually care about zoom or resolution. r=roc
- Accept the viewport that content has calculated, when it's received the latest widget geometry update. r=roc
- Mechanically separate uses of zoom/resolution based on new definitions. r=roc
- Convert GetViewportInfo()'s resolution-dependent scale into resolution-indepedent zoom. r=roc
- Reinterpret defaultZoom == 0.0 as "intrinsic scale". r=jwir3,roc
This adds a new FX_TAB_SWITCH_TOTAL_MS that should more accurately represent
the user experience of tab switch time than FX_TAB_SWITCH_UPDATE_MS.
FX_TAB_SWITCH_UPDATE_MS is being kept because it gives a good indication of how
much time is being spent in the front end parts vs the painting parts.
This works by measuring the time between beginTabSwitch() and the first call to
LayerManager::PostPresent().
Add a function to BasicLayerManager to check if it's appropriate to abort an
ongoing progressive update, and add an Android-specific implementation in
mobile/android/base/gfx/GeckoLayerClient.java.
--HG--
extra : rebase_source : edbd20acb53660340d52265591849aacafd179c4