author | Nicholas Cameron <ncameron@mozilla.com> |
Mon, 09 Dec 2013 14:40:59 +1300 | |
changeset 159646 | c79d9a33dd43b8d14c8eb1ddbfc2c1eed8323e51 |
parent 159645 | b341049f5f4728a1a90401e3964880cc5f902897 |
child 159647 | f0f2576c33402c9bfa288e6e6d35529d687be523 |
push id | 25808 |
push user | cbook@mozilla.com |
push date | Tue, 10 Dec 2013 12:03:31 +0000 |
treeherder | mozilla-central@7fb91a422c5e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mattwoodrow |
bugs | 946958 |
milestone | 29.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/layers/Layers.cpp +++ b/gfx/layers/Layers.cpp @@ -128,25 +128,16 @@ LayerManager::CreateOptimalMaskSurface(c TemporaryRef<DrawTarget> LayerManager::CreateDrawTarget(const IntSize &aSize, SurfaceFormat aFormat) { return gfxPlatform::GetPlatform()-> CreateOffscreenCanvasDrawTarget(aSize, aFormat); } -TextureFactoryIdentifier -LayerManager::GetTextureFactoryIdentifier() -{ - //TODO[nrc] make pure virtual when all layer managers use Compositor - NS_ERROR("Should have been overridden"); - return TextureFactoryIdentifier(); -} - - #ifdef DEBUG void LayerManager::Mutated(Layer* aLayer) { } #endif // DEBUG already_AddRefed<ImageContainer>
--- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -433,22 +433,16 @@ public: */ virtual TemporaryRef<mozilla::gfx::DrawTarget> CreateDrawTarget(const mozilla::gfx::IntSize &aSize, mozilla::gfx::SurfaceFormat aFormat); virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) { return true; } /** - * Returns a TextureFactoryIdentifier which describes properties of the backend - * used to decide what kind of texture and buffer clients to create - */ - virtual TextureFactoryIdentifier GetTextureFactoryIdentifier(); - - /** * returns the maximum texture size on this layer backend, or INT32_MAX * if there is no maximum */ virtual int32_t GetMaxTextureSize() const = 0; /** * Return the name of the layer manager's backend. */
--- a/gfx/layers/client/ClientLayerManager.h +++ b/gfx/layers/client/ClientLayerManager.h @@ -68,17 +68,17 @@ public: virtual already_AddRefed<ThebesLayer> CreateThebesLayer(); virtual already_AddRefed<ThebesLayer> CreateThebesLayerWithHint(ThebesLayerCreationHint aHint); virtual already_AddRefed<ContainerLayer> CreateContainerLayer(); virtual already_AddRefed<ImageLayer> CreateImageLayer(); virtual already_AddRefed<CanvasLayer> CreateCanvasLayer(); virtual already_AddRefed<ColorLayer> CreateColorLayer(); virtual already_AddRefed<RefLayer> CreateRefLayer(); - virtual TextureFactoryIdentifier GetTextureFactoryIdentifier() MOZ_OVERRIDE + TextureFactoryIdentifier GetTextureFactoryIdentifier() { return mForwarder->GetTextureFactoryIdentifier(); } virtual void FlushRendering() MOZ_OVERRIDE; void SendInvalidRegion(const nsIntRegion& aRegion); virtual uint32_t StartFrameTimeRecording(int32_t aBufferSize) MOZ_OVERRIDE;
--- a/gfx/layers/composite/LayerManagerComposite.cpp +++ b/gfx/layers/composite/LayerManagerComposite.cpp @@ -781,48 +781,23 @@ void LayerComposite::Destroy() { if (!mDestroyed) { mDestroyed = true; CleanupResources(); } } -void -LayerManagerComposite::SetCompositorID(uint32_t aID) -{ - NS_ASSERTION(mCompositor, "No compositor"); - mCompositor->SetCompositorID(aID); -} - -void -LayerManagerComposite::NotifyShadowTreeTransaction() -{ - mCompositor->NotifyLayersTransaction(); -} - bool LayerManagerComposite::CanUseCanvasLayerForSize(const gfxIntSize &aSize) { return mCompositor->CanUseCanvasLayerForSize(gfx::IntSize(aSize.width, aSize.height)); } -TextureFactoryIdentifier -LayerManagerComposite::GetTextureFactoryIdentifier() -{ - return mCompositor->GetTextureFactoryIdentifier(); -} - -int32_t -LayerManagerComposite::GetMaxTextureSize() const -{ - return mCompositor->GetMaxTextureSize(); -} - #ifndef MOZ_HAVE_PLATFORM_SPECIFIC_LAYER_BUFFERS /*static*/ bool LayerManagerComposite::SupportsDirectTexturing() { return false; }
--- a/gfx/layers/composite/LayerManagerComposite.h +++ b/gfx/layers/composite/LayerManagerComposite.h @@ -105,30 +105,31 @@ public: virtual void BeginTransaction() MOZ_OVERRIDE; virtual void BeginTransactionWithTarget(gfxContext* aTarget) MOZ_OVERRIDE { MOZ_CRASH("Use BeginTransactionWithDrawTarget"); } void BeginTransactionWithDrawTarget(gfx::DrawTarget* aTarget); - void NotifyShadowTreeTransaction(); - virtual bool EndEmptyTransaction(EndTransactionFlags aFlags = END_DEFAULT) MOZ_OVERRIDE; virtual void EndTransaction(DrawThebesLayerCallback aCallback, void* aCallbackData, EndTransactionFlags aFlags = END_DEFAULT) MOZ_OVERRIDE; virtual void SetRoot(Layer* aLayer) MOZ_OVERRIDE { mRoot = aLayer; } + // XXX[nrc]: never called, we should move this logic to ClientLayerManager + // (bug 946926). virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) MOZ_OVERRIDE; - virtual TextureFactoryIdentifier GetTextureFactoryIdentifier() MOZ_OVERRIDE; - - virtual int32_t GetMaxTextureSize() const MOZ_OVERRIDE; + virtual int32_t GetMaxTextureSize() const MOZ_OVERRIDE + { + MOZ_CRASH("Call on compositor, not LayerManagerComposite"); + } virtual void ClearCachedResources(Layer* aSubtree = nullptr) MOZ_OVERRIDE; virtual already_AddRefed<ThebesLayer> CreateThebesLayer() MOZ_OVERRIDE; virtual already_AddRefed<ContainerLayer> CreateContainerLayer() MOZ_OVERRIDE; virtual already_AddRefed<ImageLayer> CreateImageLayer() MOZ_OVERRIDE; virtual already_AddRefed<ColorLayer> CreateColorLayer() MOZ_OVERRIDE; virtual already_AddRefed<CanvasLayer> CreateCanvasLayer() MOZ_OVERRIDE; @@ -140,18 +141,17 @@ public: already_AddRefed<RefLayerComposite> CreateRefLayerComposite(); virtual LayersBackend GetBackendType() MOZ_OVERRIDE { return LAYERS_NONE; } virtual void GetBackendName(nsAString& name) MOZ_OVERRIDE { - MOZ_ASSERT(false, "Shouldn't be called for composited layer manager"); - name.AssignLiteral("Composite"); + MOZ_CRASH("Shouldn't be called for composited layer manager"); } virtual already_AddRefed<gfxASurface> CreateOptimalMaskSurface(const gfxIntSize &aSize) MOZ_OVERRIDE; DrawThebesLayerCallback GetThebesLayerCallback() const { return mThebesLayerCallback; } @@ -210,18 +210,16 @@ public: /** * returns true if PlatformAllocBuffer will return a buffer that supports * direct texturing */ static bool SupportsDirectTexturing(); static void PlatformSyncBeforeReplyUpdate(); - void SetCompositorID(uint32_t aID); - void AddInvalidRegion(const nsIntRegion& aRegion) { mInvalidRegion.Or(mInvalidRegion, aRegion); } Compositor* GetCompositor() const { return mCompositor;
--- a/gfx/layers/ipc/CompositorParent.cpp +++ b/gfx/layers/ipc/CompositorParent.cpp @@ -504,17 +504,17 @@ void CompositorParent::NotifyShadowTreeTransaction(uint64_t aId, bool aIsFirstPaint) { if (mApzcTreeManager && mLayerManager && mLayerManager->GetRoot()) { AutoResolveRefLayers resolve(mCompositionManager); mApzcTreeManager->UpdatePanZoomControllerTree(this, mLayerManager->GetRoot(), aIsFirstPaint, aId); - mLayerManager->NotifyShadowTreeTransaction(); + mCompositor->NotifyLayersTransaction(); } ScheduleComposition(); } // Used when layout.frame_rate is -1. Needs to be kept in sync with // DEFAULT_FRAME_RATE in nsRefreshDriver.cpp. static const int32_t kDefaultFrameRate = 60; @@ -698,17 +698,17 @@ CompositorParent::ShadowLayersUpdated(La if (root) { SetShadowProperties(root); if (mIsTesting) { mCompositionManager->TransformShadowTree(mTestTime); } } ScheduleComposition(); - mLayerManager->NotifyShadowTreeTransaction(); + mCompositor->NotifyLayersTransaction(); } void CompositorParent::InitializeLayerManager(const nsTArray<LayersBackend>& aBackendHints) { NS_ASSERTION(!mLayerManager, "Already initialised mLayerManager"); for (size_t i = 0; i < aBackendHints.Length(); ++i) { @@ -725,18 +725,18 @@ CompositorParent::InitializeLayerManager compositor = new CompositorD3D11(mWidget); } else if (aBackendHints[i] == LAYERS_D3D9) { compositor = new CompositorD3D9(this, mWidget); #endif } MOZ_ASSERT(compositor, "Passed invalid backend hint"); + compositor->SetCompositorID(mCompositorID); RefPtr<LayerManagerComposite> layerManager = new LayerManagerComposite(compositor); - layerManager->SetCompositorID(mCompositorID); if (layerManager->Initialize()) { mLayerManager = layerManager; MOZ_ASSERT(compositor); mCompositor = compositor; sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = layerManager; return; } @@ -764,17 +764,17 @@ CompositorParent::AllocPLayerTransaction LayerTransactionParent* p = new LayerTransactionParent(nullptr, this, 0); p->AddIPDLReference(); return p; } mCompositionManager = new AsyncCompositionManager(mLayerManager); *aSuccess = true; - *aTextureFactoryIdentifier = mLayerManager->GetTextureFactoryIdentifier(); + *aTextureFactoryIdentifier = mCompositor->GetTextureFactoryIdentifier(); LayerTransactionParent* p = new LayerTransactionParent(mLayerManager, this, 0); p->AddIPDLReference(); return p; } bool CompositorParent::DeallocPLayerTransactionParent(PLayerTransactionParent* actor) { @@ -1073,17 +1073,17 @@ CrossProcessCompositorParent::AllocPLaye const uint64_t& aId, TextureFactoryIdentifier* aTextureFactoryIdentifier, bool *aSuccess) { MOZ_ASSERT(aId != 0); if (sIndirectLayerTrees[aId].mLayerManager) { LayerManagerComposite* lm = sIndirectLayerTrees[aId].mLayerManager; - *aTextureFactoryIdentifier = lm->GetTextureFactoryIdentifier(); + *aTextureFactoryIdentifier = lm->GetCompositor()->GetTextureFactoryIdentifier(); *aSuccess = true; LayerTransactionParent* p = new LayerTransactionParent(lm, this, aId); p->AddIPDLReference(); return p; } NS_WARNING("Created child without a matching parent?"); // XXX: should be false, but that causes us to fail some tests on Mac w/ OMTC.
--- a/layout/ipc/RenderFrameParent.cpp +++ b/layout/ipc/RenderFrameParent.cpp @@ -642,17 +642,18 @@ RenderFrameParent::RenderFrameParent(nsF , mFrameLoaderDestroyed(false) , mBackgroundColor(gfxRGBA(1, 1, 1)) { *aId = 0; nsRefPtr<LayerManager> lm = GetFrom(mFrameLoader); // Perhaps the document containing this frame currently has no presentation? if (lm && lm->GetBackendType() == LAYERS_CLIENT) { - *aTextureFactoryIdentifier = lm->GetTextureFactoryIdentifier(); + *aTextureFactoryIdentifier = + static_cast<ClientLayerManager*>(lm.get())->GetTextureFactoryIdentifier(); } else { *aTextureFactoryIdentifier = TextureFactoryIdentifier(); } if (lm && lm->GetRoot() && lm->GetRoot()->AsContainerLayer()) { ViewID rootScrollId = lm->GetRoot()->AsContainerLayer()->GetFrameMetrics().mScrollId; if (rootScrollId != FrameMetrics::NULL_SCROLL_ID) { mContentViews[rootScrollId] = new nsContentView(aFrameLoader, rootScrollId, true);