author | David Anderson <danderson@mozilla.com> |
Wed, 15 Feb 2017 19:03:20 -0800 | |
changeset 343245 | 10f164e44965a5ef528ab3ec38b8e98f51e23747 |
parent 343244 | 7a84bd5bc7dc2232fd9eeb8900e0e2e364310535 |
child 343246 | 2f9a1529fe76b0dc907f0a37a0548dfae1683785 |
push id | 31372 |
push user | cbook@mozilla.com |
push date | Thu, 16 Feb 2017 12:16:10 +0000 |
treeherder | mozilla-central@2737f66ad6ac [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mattwoodrow |
bugs | 1339688 |
milestone | 54.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/composite/LayerManagerComposite.cpp +++ b/gfx/layers/composite/LayerManagerComposite.cpp @@ -1405,16 +1405,22 @@ bool LayerManagerComposite::AsyncPanZoomEnabled() const { if (CompositorBridgeParent* bridge = mCompositor->GetCompositorBridgeParent()) { return bridge->GetOptions().UseAPZ(); } return false; } +bool +LayerManagerComposite::AlwaysScheduleComposite() const +{ + return !!(mCompositor->GetDiagnosticTypes() & DiagnosticTypes::FLASH_BORDERS); +} + nsIntRegion LayerComposite::GetFullyRenderedRegion() { if (TiledContentHost* tiled = GetCompositableHost() ? GetCompositableHost()->AsTiledContentHost() : nullptr) { nsIntRegion shadowVisibleRegion = GetShadowVisibleRegion().ToUnknownRegion(); // Discard the region which hasn't been drawn yet when doing // progressive drawing. Note that if the shadow visible region // shrunk the tiled valig region may not have discarded this yet.
--- a/gfx/layers/composite/LayerManagerComposite.h +++ b/gfx/layers/composite/LayerManagerComposite.h @@ -159,16 +159,20 @@ public: // Indicate that we need to composite even if nothing in our layers has // changed, so that the widget can draw something different in its window // overlay. void SetWindowOverlayChanged() { mWindowOverlayChanged = true; } void SetPaintTime(const TimeDuration& aPaintTime) { mLastPaintTime = aPaintTime; } + virtual bool AlwaysScheduleComposite() const { + return false; + } + TimeStamp GetCompositionTime() const { return mCompositionTime; } void SetCompositionTime(TimeStamp aTimeStamp) { mCompositionTime = aTimeStamp; if (!mCompositionTime.IsNull() && !mCompositeUntilTime.IsNull() && mCompositionTime >= mCompositeUntilTime) { mCompositeUntilTime = TimeStamp(); @@ -274,16 +278,18 @@ public: virtual bool AreComponentAlphaLayersEnabled() override; virtual already_AddRefed<DrawTarget> CreateOptimalMaskDrawTarget(const IntSize &aSize) override; virtual const char* Name() const override { return ""; } + bool AlwaysScheduleComposite() const override; + /** * Post-processes layers before composition. This performs the following: * * - Applies occlusion culling. This restricts the shadow visible region * of layers that are covered with opaque content. * |aOpaqueRegion| is the region already known to be covered with opaque * content, in the post-transform coordinate space of aLayer. *
--- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -1029,18 +1029,19 @@ CompositorBridgeParent::CompositeToTarge } if (executionTime > frameBudget) { printf_stderr("Compositor: Composite execution took %4.1f ms\n", executionTime.ToMilliseconds()); } #endif // 0 -> Full-tilt composite - if (gfxPrefs::LayersCompositionFrameRate() == 0 - || mLayerManager->GetCompositor()->GetDiagnosticTypes() & DiagnosticTypes::FLASH_BORDERS) { + if (gfxPrefs::LayersCompositionFrameRate() == 0 || + mLayerManager->AlwaysScheduleComposite()) + { // Special full-tilt composite mode for performance testing ScheduleComposition(); } // TODO(bug 1328602) Need an equivalent that works with the rende thread. mLayerManager->SetCompositionTime(TimeStamp()); mozilla::Telemetry::AccumulateTimeDelta(mozilla::Telemetry::COMPOSITE_TIME, start);