Backed out 3 changesets (bug 1178376) for android reftest bustage CLOSED TREE

Backed out changeset 9394c5f63b56 (bug 1178376)
Backed out changeset 83295d5f54a9 (bug 1178376)
Backed out changeset 5e1c6511123a (bug 1178376)
This commit is contained in:
Wes Kocher 2015-09-11 11:20:23 -07:00
parent a48d20d520
commit 2fddaed099
13 changed files with 30 additions and 153 deletions

View File

@ -1593,7 +1593,7 @@ public:
* Returns the current area of the layer (in layer-space coordinates)
* marked as needed to be recomposited.
*/
const virtual nsIntRegion GetInvalidRegion() { return mInvalidRegion; }
const nsIntRegion& GetInvalidRegion() { return mInvalidRegion; }
const void SetInvalidRegion(const nsIntRegion& aRect) { mInvalidRegion = aRect; }
/**

View File

@ -169,8 +169,7 @@ ClientTiledPaintedLayer::BeginPaint()
// on this layer. If there is an OMT animation then we need to draw the whole
// visible region of this layer as determined by layout, because we don't know
// what parts of it might move into view in the compositor.
mPaintData.mHasTransformAnimation = hasTransformAnimation;
if (!mPaintData.mHasTransformAnimation &&
if (!hasTransformAnimation &&
mContentClient->GetLowPrecisionTiledBuffer()) {
ParentLayerRect criticalDisplayPort =
(displayportMetrics.GetCriticalDisplayPort() * displayportMetrics.GetZoom())
@ -257,6 +256,15 @@ ClientTiledPaintedLayer::UseProgressiveDraw() {
return false;
}
if (mPaintData.mCriticalDisplayPort.IsEmpty()) {
// This catches three scenarios:
// 1) This layer doesn't have a scrolling ancestor
// 2) This layer is subject to OMTA transforms
// 3) Low-precision painting is disabled
// In all of these cases, we don't want to draw this layer progressively.
return false;
}
if (GetIsFixedPosition() || GetParent()->GetIsFixedPosition()) {
// This layer is fixed-position and so even if it does have a scrolling
// ancestor it will likely be entirely on-screen all the time, so we
@ -264,18 +272,10 @@ ClientTiledPaintedLayer::UseProgressiveDraw() {
return false;
}
if (mPaintData.mHasTransformAnimation) {
// The compositor is going to animate this somehow, so we want it all
// on the screen at once.
return false;
}
if (ClientManager()->AsyncPanZoomEnabled()) {
LayerMetricsWrapper scrollAncestor;
GetAncestorLayers(&scrollAncestor, nullptr, nullptr);
if (!scrollAncestor) {
return false;
}
MOZ_ASSERT(scrollAncestor); // because mPaintData.mCriticalDisplayPort is non-empty
const FrameMetrics& parentMetrics = scrollAncestor.Metrics();
if (!IsScrollingOnCompositor(parentMetrics)) {
return false;

View File

@ -45,7 +45,6 @@ ClientSingleTiledLayerBuffer::ClientSingleTiledLayerBuffer(ClientTiledPaintedLay
ClientLayerManager* aManager)
: ClientTiledLayerBuffer(aPaintedLayer, aCompositableClient)
, mManager(aManager)
, mWasLastPaintProgressive(false)
{
}
@ -90,8 +89,7 @@ ClientSingleTiledLayerBuffer::GetSurfaceDescriptorTiles()
0, 0, 1, 1,
1.0,
mFrameResolution.xScale,
mFrameResolution.yScale,
mWasLastPaintProgressive);
mFrameResolution.yScale);
}
already_AddRefed<TextureClient>
@ -107,11 +105,8 @@ ClientSingleTiledLayerBuffer::PaintThebes(const nsIntRegion& aNewValidRegion,
const nsIntRegion& aPaintRegion,
const nsIntRegion& aDirtyRegion,
LayerManager::DrawPaintedLayerCallback aCallback,
void* aCallbackData,
bool aIsProgressive)
void* aCallbackData)
{
mWasLastPaintProgressive = aIsProgressive;
// Compare layer visible region size to current backbuffer size, discard if not matching.
IntSize size = mPaintedLayer->GetVisibleRegion().GetBounds().Size();
IntPoint origin = mPaintedLayer->GetVisibleRegion().GetBounds().TopLeft();

View File

@ -41,8 +41,7 @@ public:
const nsIntRegion& aPaintRegion,
const nsIntRegion& aDirtyRegion,
LayerManager::DrawPaintedLayerCallback aCallback,
void* aCallbackData,
bool aIsProgressive = false) override;
void* aCallbackData) override;
bool SupportsProgressiveUpdate() override { return false; }
bool ProgressiveUpdate(nsIntRegion& aValidRegion,
@ -89,7 +88,6 @@ private:
nsIntRegion mPaintedRegion;
nsIntRegion mValidRegion;
bool mWasLastPaintProgressive;
/**
* While we're adding tiles, this is used to keep track of the position of

View File

@ -497,7 +497,7 @@ TileClient::PrivateProtector::Set(TileClient * const aContainer, TextureClient*
// Placeholder
TileClient::TileClient()
: mCompositableClient(nullptr), mWasPlaceholder(false)
: mCompositableClient(nullptr)
{
}
@ -518,7 +518,6 @@ TileClient::TileClient(const TileClient& o)
mBackLock = o.mBackLock;
mFrontLock = o.mFrontLock;
mCompositableClient = o.mCompositableClient;
mWasPlaceholder = o.mWasPlaceholder;
mUpdateRect = o.mUpdateRect;
#ifdef GFX_TILEDLAYER_DEBUG_OVERLAY
mLastUpdate = o.mLastUpdate;
@ -540,7 +539,6 @@ TileClient::operator=(const TileClient& o)
mBackLock = o.mBackLock;
mFrontLock = o.mFrontLock;
mCompositableClient = o.mCompositableClient;
mWasPlaceholder = o.mWasPlaceholder;
mUpdateRect = o.mUpdateRect;
#ifdef GFX_TILEDLAYER_DEBUG_OVERLAY
mLastUpdate = o.mLastUpdate;
@ -844,12 +842,9 @@ TileDescriptor
TileClient::GetTileDescriptor()
{
if (IsPlaceholderTile()) {
mWasPlaceholder = true;
return PlaceholderTileDescriptor();
}
MOZ_ASSERT(mFrontLock);
bool wasPlaceholder = mWasPlaceholder;
mWasPlaceholder = false;
if (mFrontLock->GetType() == gfxSharedReadLock::TYPE_MEMORY) {
// AddRef here and Release when receiving on the host side to make sure the
// reference count doesn't go to zero before the host receives the message.
@ -861,15 +856,13 @@ TileClient::GetTileDescriptor()
return TexturedTileDescriptor(nullptr, mFrontBuffer->GetIPDLActor(),
mFrontBufferOnWhite ? MaybeTexture(mFrontBufferOnWhite->GetIPDLActor()) : MaybeTexture(null_t()),
mUpdateRect,
TileLock(uintptr_t(mFrontLock.get())),
wasPlaceholder);
TileLock(uintptr_t(mFrontLock.get())));
} else {
gfxShmSharedReadLock *lock = static_cast<gfxShmSharedReadLock*>(mFrontLock.get());
return TexturedTileDescriptor(nullptr, mFrontBuffer->GetIPDLActor(),
mFrontBufferOnWhite ? MaybeTexture(mFrontBufferOnWhite->GetIPDLActor()) : MaybeTexture(null_t()),
mUpdateRect,
TileLock(lock->GetShmemSection()),
wasPlaceholder);
TileLock(lock->GetShmemSection()));
}
}
@ -896,7 +889,12 @@ ClientMultiTiledLayerBuffer::GetSurfaceDescriptorTiles()
InfallibleTArray<TileDescriptor> tiles;
for (TileClient& tile : mRetainedTiles) {
TileDescriptor tileDesc = tile.GetTileDescriptor();
TileDescriptor tileDesc;
if (tile.IsPlaceholderTile()) {
tileDesc = PlaceholderTileDescriptor();
} else {
tileDesc = tile.GetTileDescriptor();
}
tiles.AppendElement(tileDesc);
// Reset the update rect
tile.mUpdateRect = IntRect();
@ -907,8 +905,7 @@ ClientMultiTiledLayerBuffer::GetSurfaceDescriptorTiles()
mTiles.mFirst.x, mTiles.mFirst.y,
mTiles.mSize.width, mTiles.mSize.height,
mResolution, mFrameResolution.xScale,
mFrameResolution.yScale,
mWasLastPaintProgressive);
mFrameResolution.yScale);
}
void
@ -916,15 +913,13 @@ ClientMultiTiledLayerBuffer::PaintThebes(const nsIntRegion& aNewValidRegion,
const nsIntRegion& aPaintRegion,
const nsIntRegion& aDirtyRegion,
LayerManager::DrawPaintedLayerCallback aCallback,
void* aCallbackData,
bool aIsProgressive)
void* aCallbackData)
{
TILING_LOG("TILING %p: PaintThebes painting region %s\n", mPaintedLayer, Stringify(aPaintRegion).c_str());
TILING_LOG("TILING %p: PaintThebes new valid region %s\n", mPaintedLayer, Stringify(aNewValidRegion).c_str());
mCallback = aCallback;
mCallbackData = aCallbackData;
mWasLastPaintProgressive = aIsProgressive;
#ifdef GFX_TILEDLAYER_PREF_WARNINGS
long start = PR_IntervalNow();
@ -1658,7 +1653,7 @@ ClientMultiTiledLayerBuffer::ProgressiveUpdate(nsIntRegion& aValidRegion,
// Paint the computed region and subtract it from the invalid region.
PaintThebes(validOrStale, regionToPaint, aInvalidRegion,
aCallback, aCallbackData, true);
aCallback, aCallbackData);
aInvalidRegion.Sub(aInvalidRegion, regionToPaint);
} while (repeat);
@ -1697,7 +1692,6 @@ BasicTiledLayerPaintData::ResetPaintData()
{
mLowPrecisionPaintCount = 0;
mPaintFinished = false;
mHasTransformAnimation = false;
mCompositionBounds.SetEmpty();
mCriticalDisplayPort.SetEmpty();
}

View File

@ -275,7 +275,6 @@ struct TileClient
RefPtr<TextureClientAllocator> mAllocator;
gfx::IntRect mUpdateRect;
CompositableClient* mCompositableClient;
bool mWasPlaceholder;
#ifdef GFX_TILEDLAYER_DEBUG_OVERLAY
TimeStamp mLastUpdate;
#endif
@ -354,11 +353,6 @@ struct BasicTiledLayerPaintData {
*/
bool mPaintFinished : 1;
/*
* Whether or not there is an async transform animation active
*/
bool mHasTransformAnimation : 1;
/*
* Initializes/clears data to prepare for paint action.
*/
@ -413,15 +407,13 @@ public:
, mCompositableClient(aCompositableClient)
, mLastPaintContentType(gfxContentType::COLOR)
, mLastPaintSurfaceMode(SurfaceMode::SURFACE_OPAQUE)
, mWasLastPaintProgressive(false)
{}
virtual void PaintThebes(const nsIntRegion& aNewValidRegion,
const nsIntRegion& aPaintRegion,
const nsIntRegion& aDirtyRegion,
LayerManager::DrawPaintedLayerCallback aCallback,
void* aCallbackData,
bool aIsProgressive = false) = 0;
void* aCallbackData) = 0;
virtual bool SupportsProgressiveUpdate() = 0;
virtual bool ProgressiveUpdate(nsIntRegion& aValidRegion,
@ -455,8 +447,6 @@ protected:
gfxContentType mLastPaintContentType;
SurfaceMode mLastPaintSurfaceMode;
CSSToParentLayerScale2D mFrameResolution;
bool mWasLastPaintProgressive;
};
class ClientMultiTiledLayerBuffer
@ -483,8 +473,7 @@ public:
const nsIntRegion& aPaintRegion,
const nsIntRegion& aDirtyRegion,
LayerManager::DrawPaintedLayerCallback aCallback,
void* aCallbackData,
bool aIsProgressive = false) override;
void* aCallbackData) override;
virtual bool SupportsProgressiveUpdate() override { return true; }
/**

View File

@ -61,8 +61,6 @@ public:
virtual void SetPaintWillResample(bool aResample) { mPaintWillResample = aResample; }
bool PaintWillResample() { return mPaintWillResample; }
virtual void InvalidateForAnimation(nsIntRegion& aRegion) { }
protected:
explicit ContentHost(const TextureInfo& aTextureInfo)
: CompositableHost(aTextureInfo)

View File

@ -179,16 +179,5 @@ PaintedLayerComposite::PrintInfo(std::stringstream& aStream, const char* aPrefix
}
}
const nsIntRegion
PaintedLayerComposite::GetInvalidRegion()
{
nsIntRegion region = mInvalidRegion;
if (mBuffer) {
mBuffer->InvalidateForAnimation(region);
}
return region;
}
} // namespace layers
} // namespace mozilla

View File

@ -73,8 +73,6 @@ public:
Mutated();
}
const virtual nsIntRegion GetInvalidRegion() override;
MOZ_LAYER_DECL_NAME("PaintedLayerComposite", TYPE_PAINTED)
protected:

View File

@ -10,7 +10,6 @@
#include "mozilla/gfx/Matrix.h" // for Matrix4x4
#include "mozilla/gfx/Point.h" // for IntSize
#include "mozilla/layers/Compositor.h" // for Compositor
#include "mozilla/layers/CompositorParent.h" // for CompositorParent
#include "mozilla/layers/Effects.h" // for TexturedEffect, Effect, etc
#include "mozilla/layers/LayerMetricsWrapper.h" // for LayerMetricsWrapper
#include "mozilla/layers/TextureHostOGL.h" // for TextureHostOGL
@ -29,26 +28,6 @@ namespace layers {
class Layer;
float
TileHost::GetFadeInOpacity(float aOpacity)
{
TimeStamp now = TimeStamp::Now();
if (!gfxPrefs::LayerTileFadeInEnabled() ||
mFadeStart.IsNull() ||
now < mFadeStart)
{
return aOpacity;
}
float duration = gfxPrefs::LayerTileFadeInDuration();
float elapsed = (now - mFadeStart).ToMilliseconds();
if (elapsed > duration) {
mFadeStart = TimeStamp();
return aOpacity;
}
return aOpacity * (elapsed / duration);
}
TiledLayerBufferComposite::TiledLayerBufferComposite()
: mFrameResolution()
{}
@ -77,21 +56,6 @@ TiledLayerBufferComposite::SetCompositor(Compositor* aCompositor)
}
}
void
TiledLayerBufferComposite::InvalidateForAnimation(nsIntRegion& aRegion)
{
// We need to invalidate rects where we have a tile that is in the
// process of fading in.
for (size_t i = 0; i < mRetainedTiles.Length(); i++) {
if (!mRetainedTiles[i].mFadeStart.IsNull()) {
TileIntPoint position = mTiles.TilePosition(i);
IntPoint offset = GetTileOffset(position);
nsIntRegion tileRegion = IntRect(offset, GetScaledTileSize());
aRegion.OrWith(tileRegion);
}
}
}
TiledContentHost::TiledContentHost(const TextureInfo& aTextureInfo)
: ContentHost(aTextureInfo)
, mTiledBuffer(TiledLayerBufferComposite())
@ -269,14 +233,6 @@ public:
}
}
void RecycleTileFading(TileHost& aTile) {
for (size_t i = 0; i < mTiles.Length(); i++) {
if (mTiles[i].mTextureHost == aTile.mTextureHost) {
aTile.mFadeStart = mTiles[i].mFadeStart;
}
}
}
protected:
nsTArray<TileHost> mTiles;
size_t mFirstPossibility;
@ -354,20 +310,6 @@ TiledLayerBufferComposite::UseTiles(const SurfaceDescriptorTiles& aTiles,
// If this same tile texture existed in the old tile set then this will move the texture
// source into our new tile.
oldRetainedTiles.RecycleTextureSourceForTile(tile);
// If this tile is in the process of fading, we need to keep that going
oldRetainedTiles.RecycleTileFading(tile);
if (aTiles.isProgressive() &&
texturedDesc.wasPlaceholder())
{
// This is a progressive paint, and the tile used to be a placeholder.
// We need to begin fading it in (if enabled via layers.tiles.fade-in.enabled)
tile.mFadeStart = TimeStamp::Now();
aCompositor->CompositeUntil(tile.mFadeStart +
TimeDuration::FromMilliseconds(gfxPrefs::LayerTileFadeInDuration()));
}
}
// Step 3, attempt to recycle unused texture sources from the old tile set into new tiles.
@ -545,8 +487,6 @@ TiledContentHost::RenderTile(TileHost& aTile,
return;
}
float opacity = aTile.GetFadeInOpacity(aOpacity);
aEffectChain.mPrimaryEffect = effect;
nsIntRegionRectIterator it(aScreenRegion);
@ -559,7 +499,7 @@ TiledContentHost::RenderTile(TileHost& aTile,
textureRect.y / aTextureBounds.height,
textureRect.width / aTextureBounds.width,
textureRect.height / aTextureBounds.height);
mCompositor->DrawQuad(graphicsRect, aClipRect, aEffectChain, opacity, aTransform, aVisibleRect);
mCompositor->DrawQuad(graphicsRect, aClipRect, aEffectChain, aOpacity, aTransform, aVisibleRect);
}
DiagnosticFlags flags = DiagnosticFlags::CONTENT | DiagnosticFlags::TILE;
if (aTile.mTextureHostOnWhite) {
@ -694,12 +634,5 @@ TiledContentHost::Dump(std::stringstream& aStream,
mTiledBuffer.Dump(aStream, aPrefix, aDumpHtml);
}
void
TiledContentHost::InvalidateForAnimation(nsIntRegion& aRegion)
{
return mTiledBuffer.InvalidateForAnimation(aRegion);
}
} // namespace layers
} // namespace mozilla

View File

@ -113,14 +113,6 @@ public:
CompositableHost::DumpTextureHost(aStream, mTextureHost);
}
/**
* This does a linear tween of the passed opacity (which is assumed
* to be between 0.0 and 1.0). The duration of the fade is controlled
* by the 'layers.tiles.fade-in.duration-ms' preference. It is enabled
* via 'layers.tiles.fade-in.enabled'
*/
float GetFadeInOpacity(float aOpacity);
RefPtr<gfxSharedReadLock> mSharedLock;
CompositableTextureHostRef mTextureHost;
CompositableTextureHostRef mTextureHostOnWhite;
@ -128,7 +120,6 @@ public:
mutable CompositableTextureSourceRef mTextureSourceOnWhite;
// This is not strictly necessary but makes debugging whole lot easier.
TileIntPoint mTilePosition;
TimeStamp mFadeStart;
};
class TiledLayerBufferComposite
@ -161,8 +152,6 @@ public:
// Used when TiledContentClient is present in client side.
static void RecycleCallback(TextureHost* textureHost, void* aClosure);
void InvalidateForAnimation(nsIntRegion& aRegion);
protected:
CSSToParentLayerScale2D mFrameResolution;
@ -278,8 +267,6 @@ public:
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) override;
virtual void InvalidateForAnimation(nsIntRegion& aRegion) override;
private:
void RenderLayerBuffer(TiledLayerBufferComposite& aLayerBuffer,

View File

@ -319,7 +319,6 @@ struct TexturedTileDescriptor {
MaybeTexture textureOnWhite;
IntRect updateRect;
TileLock sharedLock;
bool wasPlaceholder;
};
struct PlaceholderTileDescriptor {
@ -342,7 +341,6 @@ struct SurfaceDescriptorTiles {
float resolution;
float frameXResolution;
float frameYResolution;
bool isProgressive;
};
struct OpUseTiledLayerBuffer {

View File

@ -352,8 +352,6 @@ private:
DECL_GFX_PREF(Once, "layers.tiled-drawtarget.enabled", TiledDrawTargetEnabled, bool, false);
DECL_GFX_PREF(Once, "layers.tiles.adjust", LayersTilesAdjust, bool, true);
DECL_GFX_PREF(Once, "layers.tiles.edge-padding", TileEdgePaddingEnabled, bool, true);
DECL_GFX_PREF(Live, "layers.tiles.fade-in.enabled", LayerTileFadeInEnabled, bool, false);
DECL_GFX_PREF(Live, "layers.tiles.fade-in.duration-ms", LayerTileFadeInDuration, uint32_t, 100);
DECL_GFX_PREF(Live, "layers.transaction.warning-ms", LayerTransactionWarning, uint32_t, 200);
DECL_GFX_PREF(Once, "layers.uniformity-info", UniformityInfo, bool, false);
DECL_GFX_PREF(Once, "layers.use-image-offscreen-surfaces", UseImageOffscreenSurfaces, bool, false);