Closed Bug 1420163 Opened 2 years ago Closed 2 years ago

Update webrender to e30886d78c91bdd433fd978a39c511ef9416608e

Categories

(Core :: Graphics: WebRender, enhancement, P1)

59 Branch
enhancement

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox59 --- fixed

People

(Reporter: kats, Assigned: kats)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [wr-mvp] [gfx-noted])

Attachments

(2 files)

+++ This bug was initially created as a clone of Bug #1419440 +++

I'm filing this as a placeholder bug for the next webrender update. I may be running a cron script [1] that does try pushes with webrender update attempts, so that we can track build/test breakages introduced by webrender on a rolling basis. This bug will hold the try push links as well as dependencies filed for those breakages, so that we have a better idea going into the update of what needs fixing. I might abort the cron job because once things get too far out of sync it's hard to fully automate fixing all the breakages.

When we are ready to actually land the update, we can rename this bug and use it for the update, and then file a new bug for the next "future update".

[1] https://github.com/staktrace/moz-scripts/blob/master/try-latest-webrender.sh
Blocks: 1413793
WR @ d5d084fba55ce8b93890cd5fed884d2862463aa4 (same WR cset as before)

Various pushes:
https://treeherder.mozilla.org/#/jobs?repo=try&author=kgupta@mozilla.com&fromchange=3293271c575322308d7c786db07a308582610eb6&group_state=expanded&tochange=d02f12686933a918a153e559fe8ed2881175e38b

Linux pushes are all green. Windows debug reftests went red. The cause appears to be an assertion failure at https://searchfox.org/mozilla-central/rev/8839daefd69087d7ac2655b72790d3a25b6a815c/gfx/2d/DrawTargetD2D1.cpp#232

Stack for the assertion failure:

Assertion failure: aSurface->GetFormat() != SurfaceFormat::B8G8R8X8, at z:/build/build/src/gfx/2d/DrawTargetD2D1.cpp:232
#01: mozilla::layers::RotatedBuffer::DrawBufferQuadrant(mozilla::gfx::DrawTarget *,mozilla::layers::RotatedBuffer::XSide,mozilla::layers::RotatedBuffer::YSide,mozilla::layers::RotatedBuffer::ContextSource,float,mozilla::gfx::CompositionOp,mozilla::gfx::SourceSurface *,mozilla::gfx::BaseMatrix<float> const *) [gfx/layers/RotatedBuffer.cpp:180]
#02: mozilla::layers::RotatedBuffer::DrawBufferWithRotation(mozilla::gfx::DrawTarget *,mozilla::layers::RotatedBuffer::ContextSource,float,mozilla::gfx::CompositionOp,mozilla::gfx::SourceSurface *,mozilla::gfx::BaseMatrix<float> const *) [gfx/layers/RotatedBuffer.cpp:199]
#03: mozilla::layers::RotatedBuffer::DrawTo(mozilla::layers::PaintedLayer *,mozilla::gfx::DrawTarget *,float,mozilla::gfx::CompositionOp,mozilla::gfx::SourceSurface *,mozilla::gfx::BaseMatrix<float> const *) [gfx/layers/RotatedBuffer.cpp:237]
#04: mozilla::layers::ContentClientBasic::DrawTo(mozilla::layers::PaintedLayer *,mozilla::gfx::DrawTarget *,float,mozilla::gfx::CompositionOp,mozilla::gfx::SourceSurface *,mozilla::gfx::BaseMatrix<float> const *) [gfx/layers/client/ContentClient.cpp:564]
#05: mozilla::layers::BasicPaintedLayer::PaintThebes(gfxContext *,mozilla::layers::Layer *,void (*)(mozilla::layers::PaintedLayer *,gfxContext *,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::layers::DrawRegionClip,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,void *),void *) [gfx/layers/basic/BasicPaintedLayer.cpp:129]
#06: mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext &,gfxContext *) [gfx/layers/basic/BasicLayerManager.cpp:710]
#07: mozilla::layers::BasicLayerManager::PaintLayer(gfxContext *,mozilla::layers::Layer *,void (*)(mozilla::layers::PaintedLayer *,gfxContext *,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::layers::DrawRegionClip,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,void *),void *) [gfx/layers/basic/BasicLayerManager.cpp:893]
#08: mozilla::layers::BasicLayerManager::PaintSelfOrChildren(mozilla::layers::PaintLayerContext &,gfxContext *) [gfx/layers/basic/BasicLayerManager.cpp:733]
#09: mozilla::layers::BasicLayerManager::PaintLayer(gfxContext *,mozilla::layers::Layer *,void (*)(mozilla::layers::PaintedLayer *,gfxContext *,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::layers::DrawRegionClip,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,void *),void *) [gfx/layers/basic/BasicLayerManager.cpp:893]
#10: mozilla::layers::BasicLayerManager::EndTransactionInternal(void (*)(mozilla::layers::PaintedLayer *,gfxContext *,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,mozilla::layers::DrawRegionClip,mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const &,void *),void *,mozilla::layers::LayerManager::EndTransactionFlags) [gfx/layers/basic/BasicLayerManager.cpp:617]
#11: RegularFramePaintCallback::Paint(gfxContext &,nsIFrame *,mozilla::gfx::BaseMatrix<double> const &,mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const *,mozilla::image::imgDrawingParams &) [layout/svg/nsSVGIntegrationUtils.cpp:425]
#12: nsFilterInstance::BuildSourceImage(mozilla::gfx::DrawTarget *,mozilla::image::imgDrawingParams &) [layout/svg/nsFilterInstance.cpp:491]
#13: nsFilterInstance::Render(gfxContext *,mozilla::image::imgDrawingParams &) [layout/svg/nsFilterInstance.cpp:517]
#14: nsFilterInstance::PaintFilteredFrame(nsIFrame *,gfxContext *,nsSVGFilterPaintCallback *,nsRegion const *,mozilla::image::imgDrawingParams &) [layout/svg/nsFilterInstance.cpp:102]
#15: nsSVGIntegrationUtils::PaintFilter(nsSVGIntegrationUtils::PaintFramesParams const &) [layout/svg/nsSVGIntegrationUtils.cpp:1102]
#16: nsDisplayFilter::PaintAsLayer(nsDisplayListBuilder *,gfxContext *,mozilla::layers::LayerManager *) [layout/painting/nsDisplayList.cpp:9784]
#17: mozilla::layers::PaintByLayer [gfx/layers/wr/WebRenderCommandBuilder.cpp:371]
#18: mozilla::layers::PaintItemByDrawTarget [gfx/layers/wr/WebRenderCommandBuilder.cpp:435]
#19: mozilla::layers::WebRenderCommandBuilder::GenerateFallbackData(nsDisplayItem *,mozilla::wr::DisplayListBuilder &,mozilla::wr::IpcResourceUpdateQueue &,mozilla::layers::StackingContextHelper const &,nsDisplayListBuilder *,mozilla::gfx::RectTyped<mozilla::LayoutDevicePixel,float> &) [gfx/layers/wr/WebRenderCommandBuilder.cpp:617]
#20: mozilla::layers::WebRenderCommandBuilder::PushItemAsImage(nsDisplayItem *,mozilla::wr::DisplayListBuilder &,mozilla::wr::IpcResourceUpdateQueue &,mozilla::layers::StackingContextHelper const &,nsDisplayListBuilder *) [gfx/layers/wr/WebRenderCommandBuilder.cpp:686]
#21: mozilla::layers::WebRenderCommandBuilder::CreateWebRenderCommandsFromDisplayList(nsDisplayList *,nsDisplayListBuilder *,mozilla::layers::StackingContextHelper const &,mozilla::wr::DisplayListBuilder &,mozilla::wr::IpcResourceUpdateQueue &) [gfx/layers/wr/WebRenderCommandBuilder.cpp:227]
#22: mozilla::layers::WebRenderCommandBuilder::BuildWebRenderCommands(mozilla::wr::DisplayListBuilder &,mozilla::wr::IpcResourceUpdateQueue &,nsDisplayList *,nsDisplayListBuilder *,mozilla::layers::WebRenderScrollData &,mozilla::wr::TypedSize2D_f32__LayerPixel &) [gfx/layers/wr/WebRenderCommandBuilder.cpp:78]
#23: mozilla::layers::WebRenderLayerManager::EndTransactionWithoutLayer(nsDisplayList *,nsDisplayListBuilder *) [gfx/layers/wr/WebRenderLayerManager.cpp:275]
#24: nsDisplayList::PaintRoot(nsDisplayListBuilder *,gfxContext *,unsigned int) [layout/painting/nsDisplayList.cpp:2426]
#25: nsLayoutUtils::PaintFrame(gfxContext *,nsIFrame *,nsRegion const &,unsigned int,nsDisplayListBuilderMode,nsLayoutUtils::PaintFrameFlags) [layout/base/nsLayoutUtils.cpp:3970]
#26: mozilla::PresShell::Paint(nsView *,nsRegion const &,unsigned int) [layout/base/PresShell.cpp:6507]
#27: nsDOMWindowUtils::UpdateLayerTree() [dom/base/nsDOMWindowUtils.cpp:390]
#28: XPTC__InvokebyIndex
#29: CallMethodHelper::Call() [js/xpconnect/src/XPCWrappedNative.cpp:1317]
#30: XPCWrappedNative::CallMethod(XPCCallContext &,XPCWrappedNative::CallMode) [js/xpconnect/src/XPCWrappedNative.cpp:1282]
#31: XPC_WN_CallMethod(JSContext *,unsigned int,JS::Value *) [js/xpconnect/src/XPCWrappedNativeJSOps.cpp:929]
#32: ??? (???:???)


And the regression range:

https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=9b1b334243f4&tochange=3e14872b31a7

From the regression range I'm going to guess this is caused by bug 1416995. Ethan, can you take a look?
Flags: needinfo?(ethlin)
WR @ 9749668e8831c5f8cc56754511b338c00076b2d7

https://treeherder.mozilla.org/#/jobs?repo=try&revision=8eedc2fd966c081b146c714f04723f439c2b3bf4
https://treeherder.mozilla.org/#/jobs?repo=try&revision=2febf4307ed7a666812547cdedb7f0285fed784e

Same as before

WR @ 0d3cab521cae2b9ea5066c2fe21a25f351d3a6fb

https://treeherder.mozilla.org/#/jobs?repo=try&revision=c7b249e7877019b78eda073a15d44e81e841af54
https://treeherder.mozilla.org/#/jobs?repo=try&revision=70d7fd14cd4342bd4a060ca80300fd4f04120e95

Bustage. Regression range is:

*   0d3cab52 Auto merge of #2105 - glennw:wrench-perf, r=nical
|\
| * da8f428d Add support for basic performance annotations to reftests.
* a957ad55 Auto merge of #2101 - glennw:fix-tc-debug, r=nical
* 45eac2a6 Fix the texture cache debug display.

Based on the error message the bustage is from servo/webrender#2105 and should be relatively easy to fix.
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #3)
> From the regression range I'm going to guess this is caused by bug 1416995.
> Ethan, can you take a look?

Okay, I guess only webrender is using this path. I can reproduce this problem on my windows device.
(In reply to Ethan Lin[:ethlin] from comment #6)
> (In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #3)
> > From the regression range I'm going to guess this is caused by bug 1416995.
> > Ethan, can you take a look?
> 
> Okay, I guess only webrender is using this path. I can reproduce this
> problem on my windows device.

Oh...it's because the WR default backend is D2D1, but basic layer manager is using SKIA. In the end we will draw a snapshot of the SKIA dt on the D2D1 surface, and we will hit the assertion. I think the solution is that we should both use D2D1. I'll have a patch for it.
Depends on: 1421196
WR @ 446fedc1fa2a6be4c32d49ff2bc094242721b16b

https://treeherder.mozilla.org/#/jobs?repo=try&revision=f30ac445df4024aa99b1576d98463a26447212b3
https://treeherder.mozilla.org/#/jobs?repo=try&revision=9588a3edb947bd826a0440562efb3c2c4daba927

WR @ f21cc30e05c3175196cc8f9c85a4b94bba3ebf20

https://treeherder.mozilla.org/#/jobs?repo=try&revision=3bbe6c584fa508efddd0421484e9b156fbf8b2a6
https://treeherder.mozilla.org/#/jobs?repo=try&revision=3348537fed04a6a108450a2ad0f664b62793b4ec

WR @ e30886d78c91bdd433fd978a39c511ef9416608e

https://treeherder.mozilla.org/#/jobs?repo=try&revision=35e9ca2b8bad4549423724262c138267f70dd006
https://treeherder.mozilla.org/#/jobs?repo=try&revision=5d087496f1a1232bdc4df8a4f0a4eb7ab089464d

All same as before - green on Linux, with a debug assertion on Windows which Ethan has a patch for in bug 1421196. I'm not going to wait for that to land because it affects current Nightly as well; it's a m-c regression with an m-c fix so it's basically independent of the WR update.
Flags: needinfo?(ethlin)
Alias: wr-future-update
Assignee: nobody → bugmail
Summary: Future webrender update bug → Update webrender to e30886d78c91bdd433fd978a39c511ef9416608e
Version: unspecified → 59 Branch
Status: NEW → ASSIGNED
Priority: P2 → P1
Comment on attachment 8932473 [details]
Bug 1420163 - Update webrender to commit e30886d78c91bdd433fd978a39c511ef9416608e.

https://reviewboard.mozilla.org/r/203524/#review208976
Attachment #8932473 - Flags: review?(jmuizelaar) → review+
Comment on attachment 8932474 [details]
Bug 1420163 - Update for API change in WR PR 2105.

https://reviewboard.mozilla.org/r/203526/#review208978
Attachment #8932474 - Flags: review?(jmuizelaar) → review+
Pushed by kgupta@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fff0793b7854
Update webrender to commit e30886d78c91bdd433fd978a39c511ef9416608e. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/50b9ed9a12af
Update for API change in WR PR 2105. r=jrmuizel
https://hg.mozilla.org/mozilla-central/rev/fff0793b7854
https://hg.mozilla.org/mozilla-central/rev/50b9ed9a12af
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Depends on: 1423304
You need to log in before you can comment on or make changes to this bug.