Bug 1180326 - Part 2: Add support for variable tile sizes. r=jrmuizel

This commit is contained in:
Matt Woodrow 2015-07-29 12:01:21 -04:00
parent 52db4db003
commit cd3cc3e99f
4 changed files with 9 additions and 2 deletions

View File

@ -150,7 +150,7 @@ public:
gfx::IntPoint GetTileOffset(TileIntPoint aPosition) const {
gfx::IntSize scaledTileSize = GetScaledTileSize();
return gfx::IntPoint(aPosition.x * scaledTileSize.width,
aPosition.y * scaledTileSize.height);
aPosition.y * scaledTileSize.height) + mTileOrigin;
}
const TilesPlacement& GetPlacement() const { return mTiles; }
@ -194,6 +194,7 @@ protected:
TilesPlacement mTiles;
float mResolution;
gfx::IntSize mTileSize;
gfx::IntPoint mTileOrigin;
};
template<typename Derived, typename Tile> void

View File

@ -868,6 +868,7 @@ ClientMultiTiledLayerBuffer::GetSurfaceDescriptorTiles()
}
return SurfaceDescriptorTiles(mValidRegion,
tiles,
mTileOrigin, mTileSize,
mTiles.mFirst.x, mTiles.mFirst.y,
mTiles.mSize.width, mTiles.mSize.height,
mResolution, mFrameResolution.xScale,

View File

@ -242,7 +242,8 @@ TiledLayerBufferComposite::UseTiles(const SurfaceDescriptorTiles& aTiles,
Compositor* aCompositor,
ISurfaceAllocator* aAllocator)
{
if (mResolution != aTiles.resolution()) {
if (mResolution != aTiles.resolution() ||
aTiles.tileSize() != mTileSize) {
Clear();
}
MOZ_ASSERT(aAllocator);
@ -352,6 +353,8 @@ TiledLayerBufferComposite::UseTiles(const SurfaceDescriptorTiles& aTiles,
}
mTiles = newTiles;
mTileSize = aTiles.tileSize();
mTileOrigin = aTiles.tileOrigin();
mValidRegion = aTiles.validRegion();
mResolution = aTiles.resolution();
mFrameResolution = CSSToParentLayerScale2D(aTiles.frameXResolution(),

View File

@ -333,6 +333,8 @@ union TileDescriptor {
struct SurfaceDescriptorTiles {
nsIntRegion validRegion;
TileDescriptor[] tiles;
IntPoint tileOrigin;
IntSize tileSize;
int firstTileX;
int firstTileY;
int retainedWidth;