--- a/gfx/layers/wr/WebRenderLayerManager.cpp
+++ b/gfx/layers/wr/WebRenderLayerManager.cpp
@@ -34,17 +34,16 @@ using namespace gfx;
namespace layers {
WebRenderLayerManager::WebRenderLayerManager(nsIWidget* aWidget)
: mWidget(aWidget)
, mLatestTransactionId(0)
, mLastAsr(nullptr)
, mNeedsComposite(false)
, mIsFirstPaint(false)
- , mEndTransactionWithoutLayers(false)
, mTarget(nullptr)
, mPaintSequenceNumber(0)
{
MOZ_COUNT_CTOR(WebRenderLayerManager);
}
KnowsCompositor*
WebRenderLayerManager::AsKnowsCompositor()
@@ -367,17 +366,16 @@ WebRenderLayerManager::CreateWebRenderCo
}
}
void
WebRenderLayerManager::EndTransactionWithoutLayer(nsDisplayList* aDisplayList,
nsDisplayListBuilder* aDisplayListBuilder)
{
MOZ_ASSERT(aDisplayList && aDisplayListBuilder);
- mEndTransactionWithoutLayers = true;
WrBridge()->RemoveExpiredFontKeys();
EndTransactionInternal(nullptr,
nullptr,
EndTransactionFlags::END_DEFAULT,
aDisplayList,
aDisplayListBuilder);
}
@@ -712,17 +710,16 @@ WebRenderLayerManager::PushItemAsImage(n
return true;
}
void
WebRenderLayerManager::EndTransaction(DrawPaintedLayerCallback aCallback,
void* aCallbackData,
EndTransactionFlags aFlags)
{
- mEndTransactionWithoutLayers = false;
WrBridge()->RemoveExpiredFontKeys();
EndTransactionInternal(aCallback, aCallbackData, aFlags);
}
bool
WebRenderLayerManager::EndTransactionInternal(DrawPaintedLayerCallback aCallback,
void* aCallbackData,
EndTransactionFlags aFlags,
@@ -746,83 +743,70 @@ WebRenderLayerManager::EndTransactionInt
return false;
}
DiscardCompositorAnimations();
wr::LayoutSize contentSize { (float)size.width, (float)size.height };
wr::DisplayListBuilder builder(WrBridge()->GetPipeline(), contentSize);
wr::IpcResourceUpdateQueue resourceUpdates(WrBridge()->GetShmemAllocator());
- if (mEndTransactionWithoutLayers) {
- // aDisplayList being null here means this is an empty transaction following a layers-free
- // transaction, so we reuse the previously built displaylist and scroll
- // metadata information
- if (aDisplayList && aDisplayListBuilder) {
- StackingContextHelper sc;
- mParentCommands.Clear();
- mScrollData = WebRenderScrollData();
- MOZ_ASSERT(mLayerScrollData.empty());
- mLastCanvasDatas.Clear();
- mLastAsr = nullptr;
-
- CreateWebRenderCommandsFromDisplayList(aDisplayList, aDisplayListBuilder, sc, builder, resourceUpdates);
-
- builder.Finalize(contentSize, mBuiltDisplayList);
+ // aDisplayList being null here means this is an empty transaction following a layers-free
+ // transaction, so we reuse the previously built displaylist and scroll
+ // metadata information
+ if (aDisplayList && aDisplayListBuilder) {
+ StackingContextHelper sc;
+ mParentCommands.Clear();
+ mScrollData = WebRenderScrollData();
+ MOZ_ASSERT(mLayerScrollData.empty());
+ mLastCanvasDatas.Clear();
+ mLastAsr = nullptr;
- // Make a "root" layer data that has everything else as descendants
- mLayerScrollData.emplace_back();
- mLayerScrollData.back().InitializeRoot(mLayerScrollData.size() - 1);
- if (aDisplayListBuilder->IsBuildingLayerEventRegions()) {
- nsIPresShell* shell = aDisplayListBuilder->RootReferenceFrame()->PresContext()->PresShell();
- if (nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(shell)) {
- mLayerScrollData.back().SetEventRegionsOverride(EventRegionsOverride::ForceDispatchToContent);
- }
- }
- RefPtr<WebRenderLayerManager> self(this);
- auto callback = [self](FrameMetrics::ViewID aScrollId) -> bool {
- return self->mScrollData.HasMetadataFor(aScrollId);
- };
- if (Maybe<ScrollMetadata> rootMetadata = nsLayoutUtils::GetRootMetadata(
- aDisplayListBuilder, nullptr, ContainerLayerParameters(), callback)) {
- mLayerScrollData.back().AppendScrollMetadata(mScrollData, rootMetadata.ref());
- }
- // Append the WebRenderLayerScrollData items into WebRenderScrollData
- // in reverse order, from topmost to bottommost. This is in keeping with
- // the semantics of WebRenderScrollData.
- for (auto i = mLayerScrollData.crbegin(); i != mLayerScrollData.crend(); i++) {
- mScrollData.AddLayerData(*i);
- }
- mLayerScrollData.clear();
- mClipIdCache.clear();
+ CreateWebRenderCommandsFromDisplayList(aDisplayList, aDisplayListBuilder, sc, builder, resourceUpdates);
+
+ builder.Finalize(contentSize, mBuiltDisplayList);
- // Remove the user data those are not displayed on the screen and
- // also reset the data to unused for next transaction.
- RemoveUnusedAndResetWebRenderUserData();
- } else {
- for (auto iter = mLastCanvasDatas.Iter(); !iter.Done(); iter.Next()) {
- RefPtr<WebRenderCanvasData> canvasData = iter.Get()->GetKey();
- WebRenderCanvasRendererAsync* canvas = canvasData->GetCanvasRenderer();
- canvas->UpdateCompositableClient();
+ // Make a "root" layer data that has everything else as descendants
+ mLayerScrollData.emplace_back();
+ mLayerScrollData.back().InitializeRoot(mLayerScrollData.size() - 1);
+ if (aDisplayListBuilder->IsBuildingLayerEventRegions()) {
+ nsIPresShell* shell = aDisplayListBuilder->RootReferenceFrame()->PresContext()->PresShell();
+ if (nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(shell)) {
+ mLayerScrollData.back().SetEventRegionsOverride(EventRegionsOverride::ForceDispatchToContent);
}
}
-
- builder.PushBuiltDisplayList(mBuiltDisplayList);
- WrBridge()->AddWebRenderParentCommands(mParentCommands);
- } else {
- mScrollData = WebRenderScrollData();
+ RefPtr<WebRenderLayerManager> self(this);
+ auto callback = [self](FrameMetrics::ViewID aScrollId) -> bool {
+ return self->mScrollData.HasMetadataFor(aScrollId);
+ };
+ if (Maybe<ScrollMetadata> rootMetadata = nsLayoutUtils::GetRootMetadata(
+ aDisplayListBuilder, nullptr, ContainerLayerParameters(), callback)) {
+ mLayerScrollData.back().AppendScrollMetadata(mScrollData, rootMetadata.ref());
+ }
+ // Append the WebRenderLayerScrollData items into WebRenderScrollData
+ // in reverse order, from topmost to bottommost. This is in keeping with
+ // the semantics of WebRenderScrollData.
+ for (auto i = mLayerScrollData.crbegin(); i != mLayerScrollData.crend(); i++) {
+ mScrollData.AddLayerData(*i);
+ }
+ mLayerScrollData.clear();
+ mClipIdCache.clear();
- mRoot->StartPendingAnimations(mAnimationReadyTime);
- StackingContextHelper sc;
-
- WebRenderLayer::ToWebRenderLayer(mRoot)->RenderLayer(builder, resourceUpdates, sc);
+ // Remove the user data those are not displayed on the screen and
+ // also reset the data to unused for next transaction.
+ RemoveUnusedAndResetWebRenderUserData();
+ } else {
+ for (auto iter = mLastCanvasDatas.Iter(); !iter.Done(); iter.Next()) {
+ RefPtr<WebRenderCanvasData> canvasData = iter.Get()->GetKey();
+ WebRenderCanvasRendererAsync* canvas = canvasData->GetCanvasRenderer();
+ canvas->UpdateCompositableClient();
+ }
+ }
- // Need to do this after RenderLayer because the compositor animation IDs
- // get populated during RenderLayer and we need those.
- PopulateScrollData(mScrollData, mRoot.get());
- }
+ builder.PushBuiltDisplayList(mBuiltDisplayList);
+ WrBridge()->AddWebRenderParentCommands(mParentCommands);
mWidget->AddWindowOverlayWebRenderCommands(WrBridge(), builder, resourceUpdates);
WrBridge()->ClearReadLocks();
// We can't finish this transaction so return. This usually
// happens in an empty transaction where we can't repaint a painted layer.
// In this case, leave the transaction open and let a full transaction happen.
if (mTransactionIncomplete) {
@@ -977,29 +961,23 @@ WebRenderLayerManager::DiscardImages()
void
WebRenderLayerManager::AddActiveCompositorAnimationId(uint64_t aId)
{
// In layers-free mode we track the active compositor animation ids on the
// client side so that we don't try to discard the same animation id multiple
// times. We could just ignore the multiple-discard on the parent side, but
// checking on the content side reduces IPC traffic.
- MOZ_ASSERT(IsLayersFreeTransaction());
mActiveCompositorAnimationIds.insert(aId);
}
void
WebRenderLayerManager::AddCompositorAnimationsIdForDiscard(uint64_t aId)
{
- if (!IsLayersFreeTransaction()) {
- // For layers-full we don't track the active animation id in
- // mActiveCompositorAnimationIds, we just call this on layer destruction and
- // don't need to worry about discarding the same id multiple times.
- mDiscardedCompositorAnimationsIds.AppendElement(aId);
- } else if (mActiveCompositorAnimationIds.erase(aId)) {
+ if (mActiveCompositorAnimationIds.erase(aId)) {
// For layers-free ensure we don't try to discard an animation id that wasn't
// active. We also remove it from mActiveCompositorAnimationIds so we don't
// discard it again unless it gets re-activated.
mDiscardedCompositorAnimationsIds.AppendElement(aId);
}
}
void
--- a/gfx/layers/wr/WebRenderLayerManager.h
+++ b/gfx/layers/wr/WebRenderLayerManager.h
@@ -97,17 +97,16 @@ public:
nsDisplayListBuilder* aDisplayListBuilder);
void CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDisplayList,
nsDisplayListBuilder* aDisplayListBuilder,
const StackingContextHelper& aSc,
wr::DisplayListBuilder& aBuilder,
wr::IpcResourceUpdateQueue& aResources);
void EndTransactionWithoutLayer(nsDisplayList* aDisplayList,
nsDisplayListBuilder* aDisplayListBuilder);
- bool IsLayersFreeTransaction() { return mEndTransactionWithoutLayers; }
virtual void EndTransaction(DrawPaintedLayerCallback aCallback,
void* aCallbackData,
EndTransactionFlags aFlags = END_DEFAULT) override;
virtual LayersBackend GetBackendType() override { return LayersBackend::LAYERS_WR; }
virtual void GetBackendName(nsAString& name) override { name.AssignLiteral("WebRender"); }
virtual const char* Name() const override { return "WebRender"; }
@@ -360,17 +359,16 @@ private:
void AddMutatedLayer(Layer* aLayer);
void ClearMutatedLayers();
LayerRefArray mMutatedLayers;
bool mTransactionIncomplete;
bool mNeedsComposite;
bool mIsFirstPaint;
FocusTarget mFocusTarget;
- bool mEndTransactionWithoutLayers;
// When we're doing a transaction in order to draw to a non-default
// target, the layers transaction is only performed in order to send
// a PLayers:Update. We save the original non-default target to
// mTarget, and then perform the transaction. After the transaction ends,
// we send a message to our remote side to capture the actual pixels
// being drawn to the default target, and then copy those pixels
// back to mTarget.
--- a/layout/forms/nsButtonFrameRenderer.cpp
+++ b/layout/forms/nsButtonFrameRenderer.cpp
@@ -196,22 +196,20 @@ nsDisplayButtonBoxShadowOuter::BuildLaye
bool
nsDisplayButtonBoxShadowOuter::CreateWebRenderCommands(
mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) !=
- LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) !=
+ LAYER_ACTIVE) {
+ return false;
}
int32_t appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
nsRect shadowRect = nsRect(ToReferenceFrame(), mFrame->GetSize());
LayoutDeviceRect deviceBox =
LayoutDeviceRect::FromAppUnits(shadowRect, appUnitsPerDevPixel);
wr::LayoutRect deviceBoxRect = aSc.ToRelativeLayoutRect(deviceBox);
LayoutDeviceRect clipRect =
@@ -364,21 +362,19 @@ nsDisplayButtonBorder::BuildLayer(nsDisp
bool
nsDisplayButtonBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
MOZ_ASSERT(mBorderRenderer);
// This is really a combination of paint box shadow inner +
// paint border.
nsRect buttonRect = nsRect(ToReferenceFrame(), mFrame->GetSize());
bool snap;
@@ -546,21 +542,19 @@ nsDisplayButtonForeground::BuildLayer(ns
bool
nsDisplayButtonForeground::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
mBorderRenderer->CreateWebRenderCommands(aBuilder, aResources, aSc);
return true;
}
nsresult
nsButtonFrameRenderer::DisplayButton(nsDisplayListBuilder* aBuilder,
--- a/layout/generic/TextOverflow.cpp
+++ b/layout/generic/TextOverflow.cpp
@@ -290,18 +290,17 @@ nsDisplayTextOverflowMarker::PaintTextTo
bool
nsDisplayTextOverflowMarker::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (!aManager->IsLayersFreeTransaction() ||
- !gfxPrefs::LayersAllowTextLayers() ||
+ if (!gfxPrefs::LayersAllowTextLayers() ||
!CanUseAdvancedLayer(aDisplayListBuilder->GetWidgetLayerManager())) {
return false;
}
bool snap;
nsRect bounds = GetBounds(aDisplayListBuilder, &snap);
if (bounds.IsEmpty()) {
return true;
--- a/layout/generic/nsBulletFrame.cpp
+++ b/layout/generic/nsBulletFrame.cpp
@@ -662,21 +662,19 @@ nsDisplayBullet::BuildLayer(nsDisplayLis
bool
nsDisplayBullet::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder,
wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
if (!mBulletRenderer)
return false;
mBulletRenderer->CreateWebRenderCommands(this, aBuilder, aResources, aSc,
aManager, aDisplayListBuilder);
return true;
--- a/layout/generic/nsCanvasFrame.cpp
+++ b/layout/generic/nsCanvasFrame.cpp
@@ -307,21 +307,19 @@ nsDisplayCanvasBackgroundColor::BuildLay
bool
nsDisplayCanvasBackgroundColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
nsCanvasFrame *frame = static_cast<nsCanvasFrame *>(mFrame);
nsPoint offset = ToReferenceFrame();
nsRect bgClipRect = frame->CanvasArea() + offset;
int32_t appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
LayoutDeviceRect rect = LayoutDeviceRect::FromAppUnits(
--- a/layout/generic/nsColumnSetFrame.cpp
+++ b/layout/generic/nsColumnSetFrame.cpp
@@ -105,31 +105,29 @@ nsDisplayColumnRule::BuildLayer(nsDispla
bool
nsDisplayColumnRule::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- RefPtr<gfxContext> screenRefCtx = gfxContext::CreateOrNull(
- gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget().get());
+ RefPtr<gfxContext> screenRefCtx = gfxContext::CreateOrNull(
+ gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget().get());
- static_cast<nsColumnSetFrame*>(mFrame)->
- CreateBorderRenderers(mBorderRenderers, screenRefCtx, mVisibleRect, ToReferenceFrame());
+ static_cast<nsColumnSetFrame*>(mFrame)->
+ CreateBorderRenderers(mBorderRenderers, screenRefCtx, mVisibleRect, ToReferenceFrame());
- if (mBorderRenderers.IsEmpty()) {
- return false;
- }
+ if (mBorderRenderers.IsEmpty()) {
+ return false;
+ }
- for (auto iter = mBorderRenderers.begin(); iter != mBorderRenderers.end(); iter++) {
- if (!iter->CanCreateWebRenderCommands()) {
- return false;
- }
+ for (auto iter = mBorderRenderers.begin(); iter != mBorderRenderers.end(); iter++) {
+ if (!iter->CanCreateWebRenderCommands()) {
+ return false;
}
}
for (auto iter = mBorderRenderers.begin(); iter != mBorderRenderers.end(); iter++) {
iter->CreateWebRenderCommands(aBuilder, aResources, aSc);
}
return true;
--- a/layout/generic/nsTextFrame.cpp
+++ b/layout/generic/nsTextFrame.cpp
@@ -5183,21 +5183,19 @@ nsDisplayText::Paint(nsDisplayListBuilde
bool
nsDisplayText::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
if (mBounds.IsEmpty()) {
return true;
}
mTextDrawer->CreateWebRenderCommands(aBuilder, aSc, aManager, this, mBounds);
--- a/layout/ipc/RenderFrameParent.cpp
+++ b/layout/ipc/RenderFrameParent.cpp
@@ -383,18 +383,16 @@ nsDisplayRemote::BuildLayer(nsDisplayLis
bool
nsDisplayRemote::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- MOZ_ASSERT(aManager->IsLayersFreeTransaction());
-
mOffset = mozilla::layout::GetContentRectLayerOffset(mFrame, aDisplayListBuilder);
mozilla::LayoutDeviceRect visible = mozilla::LayoutDeviceRect::FromAppUnits(
GetVisibleRect(), mFrame->PresContext()->AppUnitsPerDevPixel());
visible += mOffset;
aBuilder.PushIFrame(aSc.ToRelativeLayoutRect(visible),
!BackfaceIsHidden(),
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -2931,21 +2931,19 @@ nsDisplaySolidColor::WriteDebugInfo(std:
bool
nsDisplaySolidColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
LayoutDeviceRect bounds = LayoutDeviceRect::FromAppUnits(
mVisibleRect, mFrame->PresContext()->AppUnitsPerDevPixel());
wr::LayoutRect transformedRect = aSc.ToRelativeLayoutRect(bounds);
aBuilder.PushRect(transformedRect,
transformedRect,
@@ -3638,21 +3636,19 @@ nsDisplayBackgroundImage::CanBuildWebRen
bool
nsDisplayBackgroundImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
if (aDisplayListBuilder) {
mImageFlags = aDisplayListBuilder->GetBackgroundPaintFlags();
}
CheckForBorderItem(this, mImageFlags);
nsCSSRendering::PaintBGParams params =
nsCSSRendering::PaintBGParams::ForSingleLayer(*StyleFrame()->PresContext(),
@@ -4262,21 +4258,19 @@ nsDisplayBackgroundColor::BuildLayer(nsD
bool
nsDisplayBackgroundColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
if (mColor == Color()) {
return true;
}
LayoutDeviceRect bounds = LayoutDeviceRect::FromAppUnits(
mBackgroundRect, mFrame->PresContext()->AppUnitsPerDevPixel());
@@ -4483,21 +4477,19 @@ nsDisplayOutline::BuildLayer(nsDisplayLi
bool
nsDisplayOutline::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
mBorderRenderer->CreateWebRenderCommands(aBuilder, aResources, aSc);
return true;
}
bool
nsDisplayOutline::IsInvisibleInRect(const nsRect& aRect) const
@@ -4766,21 +4758,19 @@ nsDisplayCaret::Paint(nsDisplayListBuild
bool
nsDisplayCaret::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
using namespace mozilla::layers;
int32_t contentOffset;
nsIFrame* frame = mCaret->GetFrame(&contentOffset);
if (!frame) {
return true;
}
@@ -5033,21 +5023,19 @@ nsDisplayBorder::BuildLayer(nsDisplayLis
bool
nsDisplayBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
if (mBorderImageRenderer) {
CreateBorderImageWebRenderCommands(aBuilder, aResources, aSc,
aManager, aDisplayListBuilder);
} else if (mBorderRenderer) {
mBorderRenderer->CreateWebRenderCommands(aBuilder, aResources, aSc);
}
@@ -5403,21 +5391,19 @@ nsDisplayBoxShadowOuter::CanBuildWebRend
bool
nsDisplayBoxShadowOuter::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
int32_t appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
nsPoint offset = ToReferenceFrame();
nsRect borderRect = mFrame->VisualBorderRectRelativeToSelf() + offset;
AutoTArray<nsRect,10> rects;
bool snap;
nsRect bounds = GetBounds(aDisplayListBuilder, &snap);
@@ -5664,21 +5650,19 @@ nsDisplayBoxShadowInner::CreateInsetBoxS
bool
nsDisplayBoxShadowInner::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
bool snap;
nsRegion visible = GetBounds(aDisplayListBuilder, &snap);
nsPoint offset = ToReferenceFrame();
nsRect borderRect = nsRect(offset, mFrame->GetSize());
nsDisplayBoxShadowInner::CreateInsetBoxShadowWebRenderCommands(aBuilder, aSc, visible,
mFrame, borderRect);
@@ -5929,22 +5913,16 @@ nsDisplayWrapList::SetReferenceFrame(con
bool
nsDisplayWrapList::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- // If this function is called in layers mode that means we created a
- // WebRenderDisplayItemLayer for a display item that is a subclass of
- // nsDisplayWrapList, but we didn't actually implement the overridden
- // CreateWebRenderCommandsFromDisplayList on it. That doesn't seem correct.
- MOZ_ASSERT(aManager->IsLayersFreeTransaction());
-
aManager->CreateWebRenderCommandsFromDisplayList(GetChildren(),
aDisplayListBuilder,
aSc,
aBuilder,
aResources);
return true;
}
@@ -9405,22 +9383,20 @@ nsDisplayFilter::PaintAsLayer(nsDisplayL
bool
nsDisplayFilter::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- // TODO: should have a fallback path to paint the child list
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ // TODO: should have a fallback path to paint the child list
+ return false;
}
nsTArray<mozilla::wr::WrFilterOp> wrFilters;
const nsTArray<nsStyleFilter>& filters = mFrame->StyleEffects()->mFilters;
nsTArray<layers::CSSFilter> cssFilters = nsTArray<layers::CSSFilter>(filters.Length());
for (const nsStyleFilter& filter : filters) {
wrFilters.AppendElement(wr::ToWrFilterOp(ToCSSFilter(filter)));
}
--- a/layout/painting/nsDisplayList.h
+++ b/layout/painting/nsDisplayList.h
@@ -2039,20 +2039,18 @@ public:
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerLayerParameters& aContainerParameters)
{
return nullptr;
}
/**
- * Function to create the WebRenderCommands without
- * Layer. For layers mode, aManager->IsLayersFreeTransaction()
- * should be false to prevent doing GetLayerState again. For
- * layers-free mode, we should check if the layer state is
+ * Function to create the WebRenderCommands.
+ * We should check if the layer state is
* active first and have an early return if the layer state is
* not active.
*
* @return true if successfully creating webrender commands.
*/
virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
--- a/layout/tables/nsTableFrame.cpp
+++ b/layout/tables/nsTableFrame.cpp
@@ -1314,21 +1314,19 @@ nsDisplayTableBorderCollapse::BuildLayer
bool
nsDisplayTableBorderCollapse::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
static_cast<nsTableFrame *>(mFrame)->CreateWebRenderCommandsForBCBorders(aBuilder,
aSc,
ToReferenceFrame());
return true;
}
--- a/layout/xul/nsImageBoxFrame.cpp
+++ b/layout/xul/nsImageBoxFrame.cpp
@@ -555,21 +555,19 @@ nsDisplayXULImage::BuildLayer(nsDisplayL
bool
nsDisplayXULImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (aManager->IsLayersFreeTransaction()) {
- ContainerLayerParameters parameter;
- if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
- return false;
- }
+ ContainerLayerParameters parameter;
+ if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+ return false;
}
uint32_t flags = imgIContainer::FLAG_SYNC_DECODE_IF_FAST;
if (aDisplayListBuilder->ShouldSyncDecodeImages()) {
flags |= imgIContainer::FLAG_SYNC_DECODE;
}
if (aDisplayListBuilder->IsPaintingToWindow()) {
flags |= imgIContainer::FLAG_HIGH_QUALITY_SCALING;