In my haste, I forgot to address review comments before pushing. This
corrects indentation in PanningPerf.java, moves GetValidLowPrecisionRegion from
Layer to TiledLayerComposer and corrects checkerboard measurement when there
isn't a low precision buffer and when the display ports don't cover the screen.
Reconcile the difference when rendering a buffer that has a different frame
resolution to the primary buffer. This is handy for low precision buffers that
are updated at a different rate to primary buffers.
The checkerboard measurement depended on the displayport coverage of the
viewport, which was calculated in LayerRenderer. When using a critical
displayport, this value changes, but this was not being accounted for.
We have all the context we need for this Gecko-side, so move this code into
LayerManagerOGL::ComputeRenderIntegrity and account for displayport coverage
correctly.
This is a rollup of the following patches
part 0: Add a dynamic cast to ColorLayer*
part 1: Add a Composer2D interface to enable implementations to more efficiently compose layer trees
part 2: Let widgets expose Composer2Ds, if they have them
part 3: Expose a layers ogl "friend" API that Composer2D will consume
part 4: Hook Composer2D into the LayerManagerOGL rendering pipeline
part 5: Implement all the goop to let widget/gonk use a Composer2D (HwcComposer2D)
This approach ends up calling BlitTextureImage three extra times instead of
changing BlitTextureImage to support rotated buffers.
Supporting rotated buffers in BlitTextureImage is somewhat tricky because of
TiledTextureImage, and calling it three more times shouldn't be too bad (it
should be better than having to repaint)
Unfortunately, the rectangle manipulation code is a bit hairy.
--HG--
extra : rebase_source : a1018a22932675b154b76533f403a1328aa29cb5
This approach ends up calling BlitTextureImage three extra times instead of
changing BlitTextureImage to support rotated buffers.
Supporting rotated buffers in BlitTextureImage is somewhat tricky because of
TiledTextureImage, and calling it three more times shouldn't be too bad (it
should be better than having to repaint)
Unfortunately, the rectangle manipulation code is a bit hairy.
--HG--
extra : rebase_source : a1018a22932675b154b76533f403a1328aa29cb5
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.
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(?)