A few parts of this function weren't quite right. The major change is to use
the TiledLayerBuffer's valid region instead of the layer's valid region.
These are the same, except when progressive rendering is enabled, where the
former may differ from the layyer (and will represent what has actually been
updated).
A lot of this code used incorrect coordinate spaces or calculations that only
worked because things were setup in a certain way. Now that the input data is
more consistently correct and things have changed slightly, this code no
longer worked.
This patch reworks things to use what I think are the correct coordinate
spaces and calculations, and should hopefully be less prone to breakage.
Make sure the frame resolution of tiled buffers isn't discarded when they're
sent from client-side to host-side. This fixes drawing of low precision tiles
when the zoom has changed since they were last drawn.
http://hg.mozilla.org/users/bschouten_mozilla.com/tiling/summary
This work is mainly porting tiled layers to new textures, implementing
double-buffered tiles and implementing a texture client pool, to be used by
tiled content clients.
Any questions regarding this patch should go to:
Bas Schouten <bschouten@mozilla.com>
Chris Lord <clord@mozilla.com>
Nicolas Silva <nsilva@mozilla.com>
In their absence questions can be directed to:
Jeff Muizelaar <jmuizelaar@mozilla.com>
Benoit Girard <bgirard@mozilla.com>
Various changes to FrameMetrics and such have causes the tile coherency checks
to end up with nonsense values, meaning updates are always happening a tile at
a time.
This fixes the calculation of those values, adds some documentation and
converts a large part of it to using typed units, to make it easier to
understand what's happening.
The fundamental change of approach in this patch is that now the temporary
texture is per-compositable.
Originally, the temporary texture was per-TextureHost. That was too many
temporary textures. With Nical's work in bug 875211, that switched to having a
temporary texture per compositor only. That's what turned out to be too few.
Now we have one per compositable which is fewer than one per TextureHost,
because e.g. a ContentHost, which is a single Compositable, may have 2
TextureHosts to implement double-buffering.
The tiles backend passes raw pointers to transfer tiled buffers between the
main thread and the compositor. This patch changes that to use shared
memory and tile descriptors instead, as well as changing the memory management
slightly to facilitate that.