Closed
Bug 1430610
Opened 6 years ago
Closed 6 years ago
OMTV causes display list reconstruction with WebRender
Categories
(Core :: Graphics: WebRender, defect, P1)
Core
Graphics: WebRender
Tracking
()
RESOLVED
FIXED
mozilla59
Tracking | Status | |
---|---|---|
firefox59 | --- | fixed |
People
(Reporter: mstange, Assigned: sotaro)
References
Details
Attachments
(1 file, 2 obsolete files)
4.38 KB,
patch
|
sotaro
:
review+
|
Details | Diff | Splinter Review |
With WebRender, off-main-thread video isn't keeping the main thread as idle as it should be. We cause the display list to be rebuilt all the time, from this stack: mozilla::PresShell::ScheduleViewManagerFlush(nsIPresShell::PaintType) InvalidateFrameInternal(nsIFrame*, bool) nsIFrame::InvalidateLayer(DisplayItemType, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const*, nsRect const*, unsigned int) mozilla::dom::HTMLMediaElement::Invalidate(bool, mozilla::Maybe<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> >&, bool) mozilla::VideoFrameContainer::Invalidate() mozilla::MediaDecoder::UpdateLogicalPositionInternal() mozilla::WatchManager<mozilla::MediaDecoder>::PerCallbackWatcher::DoNotify() mozilla::detail::RunnableMethodImpl<mozilla::WatchManager<mozilla::MediaDecoder>::PerCallbackWatcher*, void (mozilla::WatchManager<mozilla::MediaDecoder>::PerCallbackWatcher::*)(), true, (mozilla::RunnableKind)0>::Run() mozilla::AutoTaskDispatcher::DrainDirectTasks() mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run() mozilla::EventTargetWrapper::Runner::Run() mozilla::SchedulerGroup::Runnable::Run() nsThread::ProcessNextEvent(bool, bool*) Without WebRender, nsIFrame::InvalidateLayer has a fast path where it returns early if the frame has a layer that "supports async update": // If the layer is being updated asynchronously, and it's being forwarded // to a compositor, then we don't need to invalidate. if ((aFlags & UPDATE_IS_ASYNC) && layer && layer->SupportsAsyncUpdate()) { return layer; } We're not hitting that fast path and are calling SchedulePaintInternal later down in the function.
Comment 1•6 years ago
|
||
Based on Bug 1420430 Comment 4, I will take it for further study.
Assignee: nobody → vliu
Comment 2•6 years ago
|
||
(In reply to Vincent Liu[:vliu] from comment #1) > Based on Bug 1420430 Comment 4, I will take it for further study. After discussed with Jerry, it lacks of dlbi with wr enabled to be cause the rebuild all the time. I would untake it because it still has some discussions for this.
Assignee: vliu → nobody
Assignee | ||
Comment 3•6 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #0) > > Without WebRender, nsIFrame::InvalidateLayer has a fast path where it > returns early if the frame has a layer that "supports async update": > Ah, It seems like a regression of layer free with WebRender. When WebRender uses layers Bug 1359993 reduced the invalidation.
Assignee | ||
Comment 4•6 years ago
|
||
Assignee | ||
Comment 5•6 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=d19ef500feb31b94d62eb6bbac6fb3efea6c498a
Assignee | ||
Comment 6•6 years ago
|
||
Comment on attachment 8942839 [details] [diff] [review] patch - Change nsIFrame::InvalidateLayer() as to check WebRender's async update mstange, can you feedback to the patch?
Attachment #8942839 -
Flags: feedback?(mstange)
Reporter | ||
Comment 7•6 years ago
|
||
Comment on attachment 8942839 [details] [diff] [review] patch - Change nsIFrame::InvalidateLayer() as to check WebRender's async update This patch seems to address the problem. Thanks!
Attachment #8942839 -
Flags: feedback?(mstange) → feedback+
Updated•6 years ago
|
Blocks: stage-wr-nightly
Priority: -- → P1
Assignee | ||
Comment 8•6 years ago
|
||
(In reply to Vincent Liu[:vliu] from comment #2) > (In reply to Vincent Liu[:vliu] from comment #1) > > Based on Bug 1420430 Comment 4, I will take it for further study. > > After discussed with Jerry, it lacks of dlbi with wr enabled to be cause the > rebuild all the time. I would untake it because it still has some > discussions for this. I am not sure why this bug is related to dlbi. We do not need to think about if nsIFrame::InvalidateLayer() is called with UPDATE_IS_ASYNC and WebRenderImageData for video already has async image pipeline.
Assignee: nobody → sotaro.ikeda.g
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 9•6 years ago
|
||
Attachment #8942839 -
Attachment is obsolete: true
Assignee | ||
Comment 10•6 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=52c17765627ae32ba2e503a3e2695dc23d5ea82c
Assignee | ||
Updated•6 years ago
|
Attachment #8943088 -
Flags: review?(nical.bugzilla)
Comment 11•6 years ago
|
||
Comment on attachment 8943088 [details] [diff] [review] patch - Change nsIFrame::InvalidateLayer() as to check WebRender's async update Review of attachment 8943088 [details] [diff] [review]: ----------------------------------------------------------------- I don't know this well enough to give a proper review, redirecting to Morris.
Attachment #8943088 -
Flags: review?(nical.bugzilla) → review?(mtseng)
Comment 12•6 years ago
|
||
Comment on attachment 8943088 [details] [diff] [review] patch - Change nsIFrame::InvalidateLayer() as to check WebRender's async update Review of attachment 8943088 [details] [diff] [review]: ----------------------------------------------------------------- LGTM
Attachment #8943088 -
Flags: review?(mtseng) → review+
Assignee | ||
Comment 13•6 years ago
|
||
Rebased.
Attachment #8943088 -
Attachment is obsolete: true
Attachment #8943487 -
Flags: review+
Comment 14•6 years ago
|
||
Pushed by sikeda@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/dac05eadb245 Change nsIFrame::InvalidateLayer() as to check WebRender's async update r=mtseng
Comment 15•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/dac05eadb245
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
You need to log in
before you can comment on or make changes to this bug.
Description
•