diff --git a/gfx/layers/wr/WebRenderDisplayItemLayer.cpp b/gfx/layers/wr/WebRenderDisplayItemLayer.cpp index ecfa2dfc15c7..1f280b8273c9 100644 --- a/gfx/layers/wr/WebRenderDisplayItemLayer.cpp +++ b/gfx/layers/wr/WebRenderDisplayItemLayer.cpp @@ -38,8 +38,9 @@ WebRenderDisplayItemLayer::RenderLayer(wr::DisplayListBuilder& aBuilder, wr::LayoutSize contentSize; // this won't actually be used by anything wr::DisplayListBuilder builder(WrBridge()->GetPipeline(), contentSize); // We might have recycled this layer. Throw away the old commands. + mParentCommands.Clear(); - mItem->CreateWebRenderCommands(builder, aResources, aSc, WrManager(), + mItem->CreateWebRenderCommands(builder, aResources, aSc, mParentCommands, WrManager(), GetDisplayListBuilder()); builder.Finalize(contentSize, mBuiltDisplayList); } else { @@ -57,6 +58,7 @@ WebRenderDisplayItemLayer::RenderLayer(wr::DisplayListBuilder& aBuilder, } aBuilder.PushBuiltDisplayList(mBuiltDisplayList); + WrBridge()->AddWebRenderParentCommands(mParentCommands); } } // namespace layers diff --git a/gfx/layers/wr/WebRenderDisplayItemLayer.h b/gfx/layers/wr/WebRenderDisplayItemLayer.h index cda2e9790053..b8e18a17410c 100644 --- a/gfx/layers/wr/WebRenderDisplayItemLayer.h +++ b/gfx/layers/wr/WebRenderDisplayItemLayer.h @@ -37,6 +37,7 @@ public: private: wr::BuiltDisplayList mBuiltDisplayList; + nsTArray mParentCommands; }; } // namespace layers diff --git a/gfx/layers/wr/WebRenderLayerManager.cpp b/gfx/layers/wr/WebRenderLayerManager.cpp index a23f05491295..9679d854b704 100644 --- a/gfx/layers/wr/WebRenderLayerManager.cpp +++ b/gfx/layers/wr/WebRenderLayerManager.cpp @@ -338,7 +338,7 @@ WebRenderLayerManager::CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDi // Note: this call to CreateWebRenderCommands can recurse back into // this function if the |item| is a wrapper for a sublist. - if (!item->CreateWebRenderCommands(aBuilder, aResources, aSc, this, + if (!item->CreateWebRenderCommands(aBuilder, aResources, aSc, mParentCommands, this, aDisplayListBuilder)) { PushItemAsImage(item, aBuilder, aResources, aSc, aDisplayListBuilder); } diff --git a/layout/forms/nsButtonFrameRenderer.cpp b/layout/forms/nsButtonFrameRenderer.cpp index 098d630c7266..8a3336e5acc6 100644 --- a/layout/forms/nsButtonFrameRenderer.cpp +++ b/layout/forms/nsButtonFrameRenderer.cpp @@ -92,6 +92,7 @@ public: mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -198,6 +199,7 @@ nsDisplayButtonBoxShadowOuter::CreateWebRenderCommands( mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -298,6 +300,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; NS_DISPLAY_DECL_NAME("ButtonBorderBackground", TYPE_BUTTON_BORDER_BACKGROUND) @@ -365,6 +368,7 @@ bool nsDisplayButtonBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -461,6 +465,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; NS_DISPLAY_DECL_NAME("ButtonForeground", TYPE_BUTTON_FOREGROUND) @@ -547,6 +552,7 @@ bool nsDisplayButtonForeground::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/generic/nsBulletFrame.cpp b/layout/generic/nsBulletFrame.cpp index ac5d0be58ff0..d2a306768c7c 100644 --- a/layout/generic/nsBulletFrame.cpp +++ b/layout/generic/nsBulletFrame.cpp @@ -229,6 +229,7 @@ public: wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder); @@ -278,6 +279,7 @@ private: wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder); @@ -286,6 +288,7 @@ private: wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder); @@ -327,15 +330,18 @@ BulletRenderer::CreateWebRenderCommands(nsDisplayItem* aItem, wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { if (IsImageType()) { CreateWebRenderCommandsForImage(aItem, aBuilder, aResources, - aSc, aManager, aDisplayListBuilder); + aSc, aParentCommands, + aManager, aDisplayListBuilder); } else if (IsPathType()) { CreateWebRenderCommandsForPath(aItem, aBuilder, aResources, - aSc, aManager, aDisplayListBuilder); + aSc, aParentCommands, + aManager, aDisplayListBuilder); } else { MOZ_ASSERT(IsTextType()); CreateWebRenderCommandsForText(aItem, aBuilder, aResources, aSc, @@ -452,6 +458,7 @@ BulletRenderer::CreateWebRenderCommandsForImage(nsDisplayItem* aItem, wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -492,6 +499,7 @@ BulletRenderer::CreateWebRenderCommandsForPath(nsDisplayItem* aItem, wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -559,6 +567,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue&, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -663,6 +672,7 @@ bool nsDisplayBullet::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -676,7 +686,7 @@ nsDisplayBullet::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder, if (!mBulletRenderer) return false; - mBulletRenderer->CreateWebRenderCommands(this, aBuilder, aResources, aSc, + mBulletRenderer->CreateWebRenderCommands(this, aBuilder, aResources, aSc, aParentCommands, aManager, aDisplayListBuilder); return true; } diff --git a/layout/generic/nsCanvasFrame.cpp b/layout/generic/nsCanvasFrame.cpp index 7f01ad7331a9..7e086ac44e53 100644 --- a/layout/generic/nsCanvasFrame.cpp +++ b/layout/generic/nsCanvasFrame.cpp @@ -309,6 +309,7 @@ bool nsDisplayCanvasBackgroundColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/generic/nsCanvasFrame.h b/layout/generic/nsCanvasFrame.h index 27761fa1202d..067a839d129b 100644 --- a/layout/generic/nsCanvasFrame.h +++ b/layout/generic/nsCanvasFrame.h @@ -161,6 +161,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder, diff --git a/layout/generic/nsColumnSetFrame.cpp b/layout/generic/nsColumnSetFrame.cpp index be259e12bd7b..1a31f11b7d6e 100644 --- a/layout/generic/nsColumnSetFrame.cpp +++ b/layout/generic/nsColumnSetFrame.cpp @@ -46,6 +46,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual void Paint(nsDisplayListBuilder* aBuilder, @@ -107,6 +108,7 @@ bool nsDisplayColumnRule::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/generic/nsHTMLCanvasFrame.cpp b/layout/generic/nsHTMLCanvasFrame.cpp index caaead009f6b..6606087fa8e9 100644 --- a/layout/generic/nsHTMLCanvasFrame.cpp +++ b/layout/generic/nsHTMLCanvasFrame.cpp @@ -127,6 +127,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override { diff --git a/layout/generic/nsImageFrame.cpp b/layout/generic/nsImageFrame.cpp index 831fd10dda3c..4589f860c296 100644 --- a/layout/generic/nsImageFrame.cpp +++ b/layout/generic/nsImageFrame.cpp @@ -1703,6 +1703,7 @@ bool nsDisplayImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/generic/nsImageFrame.h b/layout/generic/nsImageFrame.h index 7a309990e438..c23e6b4c4e87 100644 --- a/layout/generic/nsImageFrame.h +++ b/layout/generic/nsImageFrame.h @@ -462,6 +462,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; diff --git a/layout/generic/nsPluginFrame.cpp b/layout/generic/nsPluginFrame.cpp index 1e27d8253300..b69337e94f95 100644 --- a/layout/generic/nsPluginFrame.cpp +++ b/layout/generic/nsPluginFrame.cpp @@ -1050,6 +1050,7 @@ bool nsDisplayPlugin::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/generic/nsPluginFrame.h b/layout/generic/nsPluginFrame.h index 5fe3828dcf51..83d540788571 100644 --- a/layout/generic/nsPluginFrame.h +++ b/layout/generic/nsPluginFrame.h @@ -394,6 +394,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; }; diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp index bc107395e483..00bb7ecc94af 100644 --- a/layout/generic/nsTextFrame.cpp +++ b/layout/generic/nsTextFrame.cpp @@ -4976,6 +4976,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual void Paint(nsDisplayListBuilder* aBuilder, @@ -5175,6 +5176,7 @@ bool nsDisplayText::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/generic/nsVideoFrame.cpp b/layout/generic/nsVideoFrame.cpp index 0512c0a209aa..6b3658d02509 100644 --- a/layout/generic/nsVideoFrame.cpp +++ b/layout/generic/nsVideoFrame.cpp @@ -435,6 +435,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override { diff --git a/layout/ipc/RenderFrameParent.cpp b/layout/ipc/RenderFrameParent.cpp index 7d6139b8c4f7..9248df1773b5 100644 --- a/layout/ipc/RenderFrameParent.cpp +++ b/layout/ipc/RenderFrameParent.cpp @@ -385,6 +385,7 @@ bool nsDisplayRemote::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/ipc/RenderFrameParent.h b/layout/ipc/RenderFrameParent.h index b0a825923731..f25b7c7e8d76 100644 --- a/layout/ipc/RenderFrameParent.h +++ b/layout/ipc/RenderFrameParent.h @@ -164,6 +164,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual bool UpdateScrollData(mozilla::layers::WebRenderScrollData* aData, diff --git a/layout/painting/nsCSSRendering.cpp b/layout/painting/nsCSSRendering.cpp index 9e156f81752c..286bf74c0b9b 100644 --- a/layout/painting/nsCSSRendering.cpp +++ b/layout/painting/nsCSSRendering.cpp @@ -1996,6 +1996,7 @@ nsCSSRendering::BuildWebRenderDisplayItemsForStyleImageLayer(const PaintBGParams mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem) @@ -2021,7 +2022,7 @@ nsCSSRendering::BuildWebRenderDisplayItemsForStyleImageLayer(const PaintBGParams sc = aParams.frame->StyleContext(); } - return BuildWebRenderDisplayItemsForStyleImageLayerWithSC(aParams, aBuilder, aResources, aSc, + return BuildWebRenderDisplayItemsForStyleImageLayerWithSC(aParams, aBuilder, aResources, aSc, aParentCommands, aLayer, aManager, aItem, sc, *aParams.frame->StyleBorder()); } @@ -2745,6 +2746,7 @@ nsCSSRendering::BuildWebRenderDisplayItemsForStyleImageLayerWithSC(const PaintBG mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem, @@ -2787,7 +2789,7 @@ nsCSSRendering::BuildWebRenderDisplayItemsForStyleImageLayerWithSC(const PaintBG result &= state.mImageRenderer.PrepareResult(); if (!state.mFillArea.IsEmpty()) { return state.mImageRenderer.BuildWebRenderDisplayItemsForLayer(&aParams.presCtx, - aBuilder, aResources, aSc, + aBuilder, aResources, aSc, aParentCommands, aLayer, aManager, aItem, state.mDestArea, state.mFillArea, state.mAnchor + paintBorderArea.TopLeft(), diff --git a/layout/painting/nsCSSRendering.h b/layout/painting/nsCSSRendering.h index 884a9036ac54..2735a3944d19 100644 --- a/layout/painting/nsCSSRendering.h +++ b/layout/painting/nsCSSRendering.h @@ -504,6 +504,7 @@ struct nsCSSRendering { mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem); @@ -512,6 +513,7 @@ struct nsCSSRendering { mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem, diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp index 16eb34a43f2a..34930ef92588 100644 --- a/layout/painting/nsDisplayList.cpp +++ b/layout/painting/nsDisplayList.cpp @@ -2930,6 +2930,7 @@ bool nsDisplaySolidColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -2987,6 +2988,7 @@ bool nsDisplaySolidColorRegion::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -3622,6 +3624,7 @@ bool nsDisplayBackgroundImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -3643,7 +3646,7 @@ nsDisplayBackgroundImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilde CompositionOp::OP_OVER); params.bgClipRect = &mBounds; DrawResult result = - nsCSSRendering::BuildWebRenderDisplayItemsForStyleImageLayer(params, aBuilder, aResources, aSc, nullptr, aManager, this); + nsCSSRendering::BuildWebRenderDisplayItemsForStyleImageLayer(params, aBuilder, aResources, aSc, aParentCommands, nullptr, aManager, this); nsDisplayBackgroundGeometry::UpdateDrawResult(this, result); return true; @@ -4253,6 +4256,7 @@ bool nsDisplayBackgroundColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -4473,6 +4477,7 @@ bool nsDisplayOutline::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -4756,6 +4761,7 @@ bool nsDisplayCaret::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -5021,6 +5027,7 @@ bool nsDisplayBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -5032,7 +5039,7 @@ nsDisplayBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuild } if (mBorderImageRenderer) { - CreateBorderImageWebRenderCommands(aBuilder, aResources, aSc, + CreateBorderImageWebRenderCommands(aBuilder, aResources, aSc, aParentCommands, aManager, aDisplayListBuilder); } else if (mBorderRenderer) { mBorderRenderer->CreateWebRenderCommands(aBuilder, aResources, aSc); @@ -5045,6 +5052,7 @@ void nsDisplayBorder::CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -5388,6 +5396,7 @@ bool nsDisplayBoxShadowOuter::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -5633,6 +5642,7 @@ bool nsDisplayBoxShadowInner::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -5898,6 +5908,7 @@ bool nsDisplayWrapList::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -6232,6 +6243,7 @@ bool nsDisplayOpacity::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -6315,6 +6327,7 @@ bool nsDisplayBlendMode::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -6323,7 +6336,7 @@ nsDisplayBlendMode::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBu &mList, nullptr, 0, nullptr, nullptr, nullptr, filters, nsCSSRendering::GetGFXBlendMode(mBlendMode)); - return nsDisplayWrapList::CreateWebRenderCommands(aBuilder,aResources, sc, + return nsDisplayWrapList::CreateWebRenderCommands(aBuilder,aResources, sc, aParentCommands, aManager, aDisplayListBuilder); } @@ -6446,13 +6459,14 @@ bool nsDisplayBlendContainer::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { StackingContextHelper sc(aSc, aBuilder, aDisplayListBuilder, this, &mList, nullptr, 0, nullptr, nullptr); - return nsDisplayWrapList::CreateWebRenderCommands(aBuilder, aResources, sc, + return nsDisplayWrapList::CreateWebRenderCommands(aBuilder, aResources, sc, aParentCommands, aManager, aDisplayListBuilder); } @@ -6539,13 +6553,14 @@ bool nsDisplayOwnLayer::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { if (!aManager->AsyncPanZoomEnabled() || mThumbData.mDirection == ScrollDirection::NONE) { return nsDisplayWrapList::CreateWebRenderCommands(aBuilder, aResources, aSc, - aManager, aDisplayListBuilder); + aParentCommands, aManager, aDisplayListBuilder); } // APZ is enabled and this is a scroll thumb, so we need to create and @@ -6560,7 +6575,7 @@ nsDisplayOwnLayer::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBui &mList, nullptr, mWrAnimationId, nullptr, nullptr); nsDisplayWrapList::CreateWebRenderCommands(aBuilder, aResources, sc, - aManager, aDisplayListBuilder); + aParentCommands, aManager, aDisplayListBuilder); return true; } @@ -7879,6 +7894,7 @@ bool nsDisplayTransform::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -7954,7 +7970,7 @@ nsDisplayTransform::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBu sc.SetInheritedScale(newTransformMatrix.As2D().ScaleFactors(true)); } - return mStoredList.CreateWebRenderCommands(aBuilder, aResources, sc, + return mStoredList.CreateWebRenderCommands(aBuilder, aResources, sc, aParentCommands, aManager, aDisplayListBuilder); } @@ -8512,6 +8528,7 @@ bool nsDisplayPerspective::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -8559,7 +8576,7 @@ nsDisplayPerspective::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& a &perspectiveMatrix, filters); - return mList.CreateWebRenderCommands(aBuilder, aResources, sc, + return mList.CreateWebRenderCommands(aBuilder, aResources, sc, aParentCommands, aManager, aDisplayListBuilder); } @@ -9025,6 +9042,7 @@ bool nsDisplayMask::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -9045,7 +9063,7 @@ nsDisplayMask::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder aBuilder.PushClip(clipId, /*aRecordInStack*/ false); } - nsDisplaySVGEffects::CreateWebRenderCommands(aBuilder, aResources, aSc, aManager, aDisplayListBuilder); + nsDisplaySVGEffects::CreateWebRenderCommands(aBuilder, aResources, aSc, aParentCommands, aManager, aDisplayListBuilder); if (mask) { aBuilder.PopClip(/*aRecordInStack*/ false); @@ -9251,6 +9269,7 @@ bool nsDisplayFilter::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -9281,7 +9300,7 @@ nsDisplayFilter::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuild nullptr, wrFilters); - nsDisplaySVGEffects::CreateWebRenderCommands(aBuilder, aResources, sc, aManager, aDisplayListBuilder); + nsDisplaySVGEffects::CreateWebRenderCommands(aBuilder, aResources, sc, aParentCommands, aManager, aDisplayListBuilder); return true; } diff --git a/layout/painting/nsDisplayList.h b/layout/painting/nsDisplayList.h index 9efb93fff330..46b4df4e2312 100644 --- a/layout/painting/nsDisplayList.h +++ b/layout/painting/nsDisplayList.h @@ -63,6 +63,7 @@ class ImageLayer; class ImageContainer; class StackingContextHelper; class WebRenderCommand; +class WebRenderParentCommand; class WebRenderDisplayItemLayer; class WebRenderScrollData; class WebRenderLayerScrollData; @@ -2056,6 +2057,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { return false; } @@ -3024,6 +3026,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -3058,6 +3061,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -3082,6 +3086,7 @@ protected: void CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder); nsRegion CalculateBounds(const nsStyleBorder& aStyleBorder) const; @@ -3186,6 +3191,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -3238,6 +3244,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -3322,6 +3329,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual void HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect, @@ -3558,6 +3566,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual nsRegion GetOpaqueRegion(nsDisplayListBuilder* aBuilder, @@ -3728,6 +3737,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; nsRect GetBoundsInternal(); @@ -3793,6 +3803,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -3824,6 +3835,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual bool IsInvisibleInRect(const nsRect& aRect) const override; @@ -4140,6 +4152,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -4259,6 +4272,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -4304,6 +4318,7 @@ public: bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual bool ComputeVisibility(nsDisplayListBuilder* aBuilder, @@ -4354,6 +4369,7 @@ public: bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -4441,6 +4457,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual bool UpdateScrollData(mozilla::layers::WebRenderScrollData* aData, @@ -4881,6 +4898,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; private: @@ -4959,6 +4977,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; @@ -5095,6 +5114,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual bool UpdateScrollData(mozilla::layers::WebRenderScrollData* aData, @@ -5429,6 +5449,7 @@ public: bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; diff --git a/layout/painting/nsImageRenderer.cpp b/layout/painting/nsImageRenderer.cpp index ebf273660c09..907b139734d4 100644 --- a/layout/painting/nsImageRenderer.cpp +++ b/layout/painting/nsImageRenderer.cpp @@ -589,6 +589,7 @@ nsImageRenderer::BuildWebRenderDisplayItems(nsPresContext* aPresContext, mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem, @@ -736,6 +737,7 @@ nsImageRenderer::BuildWebRenderDisplayItemsForLayer(nsPresContext* aPresCo mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem, @@ -754,7 +756,7 @@ nsImageRenderer::BuildWebRenderDisplayItemsForLayer(nsPresContext* aPresCo mSize.width <= 0 || mSize.height <= 0) { return DrawResult::SUCCESS; } - return BuildWebRenderDisplayItems(aPresContext, aBuilder, aResources, aSc, + return BuildWebRenderDisplayItems(aPresContext, aBuilder, aResources, aSc, aParentCommands, aLayer, aManager, aItem, aDirty, aDest, aFill, aAnchor, aRepeatSize, CSSIntRect(0, 0, diff --git a/layout/painting/nsImageRenderer.h b/layout/painting/nsImageRenderer.h index 7e1fab45d8aa..7dbfaaa81bab 100644 --- a/layout/painting/nsImageRenderer.h +++ b/layout/painting/nsImageRenderer.h @@ -213,6 +213,7 @@ public: mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResource, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem, @@ -300,6 +301,7 @@ private: mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderDisplayItemLayer* aLayer, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayItem* aItem, diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp index 1366adcee55f..37ed8bb66072 100644 --- a/layout/tables/nsTableFrame.cpp +++ b/layout/tables/nsTableFrame.cpp @@ -1277,6 +1277,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override; virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder, @@ -1316,6 +1317,7 @@ bool nsDisplayTableBorderCollapse::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { @@ -1328,6 +1330,7 @@ nsDisplayTableBorderCollapse::CreateWebRenderCommands(mozilla::wr::DisplayListBu static_cast(mFrame)->CreateWebRenderCommandsForBCBorders(aBuilder, aSc, + aParentCommands, ToReferenceFrame()); return true; } @@ -6521,6 +6524,7 @@ struct BCBlockDirSeg BCPixelSize aInlineSegBSize, wr::DisplayListBuilder& aBuilder, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aPt); void AdvanceOffsetB(); void IncludeCurrentBorder(BCPaintBorderIterator& aIter); @@ -6575,6 +6579,7 @@ struct BCInlineDirSeg void CreateWebRenderCommands(BCPaintBorderIterator& aIter, wr::DisplayListBuilder& aBuilder, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aPt); nscoord mOffsetI; // i-offset with respect to the table edge @@ -6612,15 +6617,18 @@ struct BCCreateWebRenderCommandsData { BCCreateWebRenderCommandsData(wr::DisplayListBuilder& aBuilder, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aOffsetToReferenceFrame) : mBuilder(aBuilder) , mSc(aSc) + , mParentCommands(aParentCommands) , mOffsetToReferenceFrame(aOffsetToReferenceFrame) { } wr::DisplayListBuilder& mBuilder; const layers::StackingContextHelper& mSc; + nsTArray& mParentCommands; const nsPoint& mOffsetToReferenceFrame; }; @@ -6634,9 +6642,10 @@ struct BCPaintBorderAction BCPaintBorderAction(wr::DisplayListBuilder& aBuilder, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aOffsetToReferenceFrame) : mMode(Mode::CREATE_WEBRENDER_COMMANDS) - , mCreateWebRenderCommandsData(aBuilder, aSc, aOffsetToReferenceFrame) + , mCreateWebRenderCommandsData(aBuilder, aSc, aParentCommands, aOffsetToReferenceFrame) { mMode = Mode::CREATE_WEBRENDER_COMMANDS; } @@ -7451,6 +7460,7 @@ BCBlockDirSeg::CreateWebRenderCommands(BCPaintBorderIterator& aIter, BCPixelSize aInlineSegBSize, wr::DisplayListBuilder& aBuilder, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aOffset) { Maybe param = BuildBorderParameters(aIter, aInlineSegBSize); @@ -7709,6 +7719,7 @@ void BCInlineDirSeg::CreateWebRenderCommands(BCPaintBorderIterator& aIter, wr::DisplayListBuilder& aBuilder, const layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aPt) { Maybe param = BuildBorderParameters(aIter); @@ -7837,6 +7848,7 @@ BCPaintBorderIterator::AccumulateOrDoActionInlineDirSegment(BCPaintBorderAction& mInlineSeg.CreateWebRenderCommands(*this, aAction.mCreateWebRenderCommandsData.mBuilder, aAction.mCreateWebRenderCommandsData.mSc, + aAction.mCreateWebRenderCommandsData.mParentCommands, aAction.mCreateWebRenderCommandsData.mOffsetToReferenceFrame); } } @@ -7889,6 +7901,7 @@ BCPaintBorderIterator::AccumulateOrDoActionBlockDirSegment(BCPaintBorderAction& inlineSegBSize, aAction.mCreateWebRenderCommandsData.mBuilder, aAction.mCreateWebRenderCommandsData.mSc, + aAction.mCreateWebRenderCommandsData.mParentCommands, aAction.mCreateWebRenderCommandsData.mOffsetToReferenceFrame); } } @@ -7963,9 +7976,10 @@ nsTableFrame::PaintBCBorders(DrawTarget& aDrawTarget, const nsRect& aDirtyRect) void nsTableFrame::CreateWebRenderCommandsForBCBorders(wr::DisplayListBuilder& aBuilder, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aOffsetToReferenceFrame) { - BCPaintBorderAction action(aBuilder, aSc, aOffsetToReferenceFrame); + BCPaintBorderAction action(aBuilder, aSc, aParentCommands, aOffsetToReferenceFrame); // We always draw whole table border for webrender. Passing the table rect as // dirty rect. IterateBCBorders(action, GetRect()); diff --git a/layout/tables/nsTableFrame.h b/layout/tables/nsTableFrame.h index f1fbfc4c9327..e363125fe65b 100644 --- a/layout/tables/nsTableFrame.h +++ b/layout/tables/nsTableFrame.h @@ -300,6 +300,7 @@ public: void PaintBCBorders(DrawTarget& aDrawTarget, const nsRect& aDirtyRect); void CreateWebRenderCommandsForBCBorders(mozilla::wr::DisplayListBuilder& aBuilder, const mozilla::layers::StackingContextHelper& aSc, + nsTArray& aParentCommands, const nsPoint& aPt); virtual void MarkIntrinsicISizesDirty() override; diff --git a/layout/xul/nsImageBoxFrame.cpp b/layout/xul/nsImageBoxFrame.cpp index 6c7a47d19315..bccb42155724 100644 --- a/layout/xul/nsImageBoxFrame.cpp +++ b/layout/xul/nsImageBoxFrame.cpp @@ -555,6 +555,7 @@ bool nsDisplayXULImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) { diff --git a/layout/xul/nsImageBoxFrame.h b/layout/xul/nsImageBoxFrame.h index 07e4b790228f..960637e69632 100644 --- a/layout/xul/nsImageBoxFrame.h +++ b/layout/xul/nsImageBoxFrame.h @@ -184,6 +184,7 @@ public: virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, mozilla::wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, + nsTArray& aParentCommands, mozilla::layers::WebRenderLayerManager* aManager, nsDisplayListBuilder* aDisplayListBuilder) override;