Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1573)

Issue 2791223002: Notify Blink to suppress frame requests during BeginMainFrame (Closed)

Created:
3 years, 8 months ago by alancutter (OOO until 2018)
Modified:
3 years, 8 months ago
Reviewers:
esprehn
CC:
darktears, blink-reviews, blink-reviews-animation_chromium.org, blink-reviews-api_chromium.org, chromium-reviews, darin-cc_chromium.org, dcheng, dglazkov+blink, Eric Willigers, jam, kinuko+watch, mlamouri+watch-content_chromium.org, mlamouri+watch-blink_chromium.org, rjwright, shans
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Notify Blink to suppress frame requests during BeginMainFrame This change fixes a performance regression where main thread frames were being continuously requested during composited animations. This is a temporary workaround that tells Blink when BeginMainFrame is active and it should not be requesting new frames for visual updates. BUG=704763 Review-Url: https://codereview.chromium.org/2791223002 Cr-Commit-Position: refs/heads/master@{#462022} Committed: https://chromium.googlesource.com/chromium/src/+/317a8e0e26459f401312043fa99ed8e17b1b24a4

Patch Set 1 #

Patch Set 2 : +willBeginMainFrameBasedSuppression #

Total comments: 4

Patch Set 3 : g cl try #

Patch Set 4 : Comments #

Patch Set 5 : Move flag clear #

Patch Set 6 : pagefix #

Patch Set 7 : DCHECK update #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+51 lines, -1 line) Patch
M content/renderer/render_widget.cc View 1 2 3 4 2 chunks +3 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/page/PageAnimator.h View 3 4 2 chunks +7 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/page/PageAnimator.cpp View 1 2 3 4 5 6 1 chunk +12 lines, -1 line 2 comments Download
M third_party/WebKit/Source/web/WebFrameWidgetImpl.h View 3 4 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp View 3 4 1 chunk +5 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebPagePopupImpl.h View 3 4 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebPagePopupImpl.cpp View 1 2 3 4 5 1 chunk +7 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebViewFrameWidget.h View 3 4 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebViewFrameWidget.cpp View 3 4 1 chunk +5 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebViewImpl.h View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebViewImpl.cpp View 1 2 3 4 1 chunk +5 lines, -0 lines 0 comments Download
M third_party/WebKit/public/web/WebWidget.h View 3 4 1 chunk +3 lines, -0 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 38 (24 generated)
alancutter (OOO until 2018)
This is an implementation of the suggestion in https://bugs.chromium.org/p/chromium/issues/detail?id=704763#c35. This patch deviates from it slightly ...
3 years, 8 months ago (2017-04-03 13:11:36 UTC) #2
esprehn
Those test failures look real: blink::WebPagePopupImpl::setSuppressFrameRequestsWorkaroundFor704763Only [0x034C58E3+19] content::RenderWidget::WillBeginCompositorFrame [0x03F2133F+111] cc::ProxyMain::BeginMainFrame [0x027E8BCF+1231] base::internal::Invoker<base::internal::BindState<void (__thiscall cc::ProxyMain::*)(std::unique_ptr<cc::BeginMainFrameAndCommitState,std::default_delete<cc::BeginMainFrameAndCommitState> >),base::WeakPtr<cc::ProxyMain>,base::internal::PassedWrapper<std:: ...
3 years, 8 months ago (2017-04-04 06:07:15 UTC) #7
esprehn
https://codereview.chromium.org/2791223002/diff/20001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/2791223002/diff/20001/content/renderer/render_widget.cc#newcode916 content/renderer/render_widget.cc:916: GetWebWidget()->setSuppressFrameRequestsWorkaroundFor704763Only(false); I think should be in RenderWidget::UpdateVisualState() right after ...
3 years, 8 months ago (2017-04-04 06:13:55 UTC) #8
alancutter (OOO until 2018)
https://codereview.chromium.org/2791223002/diff/20001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/2791223002/diff/20001/content/renderer/render_widget.cc#newcode916 content/renderer/render_widget.cc:916: GetWebWidget()->setSuppressFrameRequestsWorkaroundFor704763Only(false); On 2017/04/04 at 06:13:55, esprehn wrote: > I ...
3 years, 8 months ago (2017-04-04 09:54:31 UTC) #9
esprehn
Real failures, I think you want to hook RenderWidget::UpdateVisualState? [4680:3852:0404/033359.593:9678801:FATAL:pageanimator.cpp(77)] Check failed: !m_suppressFrameRequestsWorkaroundFor704763Only. Backtrace: base::debug::StackTrace::StackTrace ...
3 years, 8 months ago (2017-04-04 18:22:27 UTC) #14
esprehn
Actually what are those tests doing that they don't correctly call updateAllLifecyclePhases?
3 years, 8 months ago (2017-04-04 18:30:45 UTC) #15
alancutter (OOO until 2018)
On 2017/04/04 at 18:30:45, esprehn wrote: > Actually what are those tests doing that they ...
3 years, 8 months ago (2017-04-05 01:28:46 UTC) #16
alancutter (OOO until 2018)
On 2017/04/04 at 10:22:25, commit-bot wrote: > Dry run: Try jobs failed on following builders: ...
3 years, 8 months ago (2017-04-05 01:42:22 UTC) #19
alancutter (OOO until 2018)
On 2017/04/05 at 03:47:28, commit-bot wrote: > Dry run: Try jobs failed on following builders: ...
3 years, 8 months ago (2017-04-05 03:56:55 UTC) #26
alancutter (OOO until 2018)
On 2017/04/05 at 05:19:28, commit-bot wrote: > Dry run: This issue passed the CQ dry ...
3 years, 8 months ago (2017-04-05 05:20:07 UTC) #31
esprehn
lgtm https://codereview.chromium.org/2791223002/diff/120001/third_party/WebKit/Source/core/page/PageAnimator.cpp File third_party/WebKit/Source/core/page/PageAnimator.cpp (right): https://codereview.chromium.org/2791223002/diff/120001/third_party/WebKit/Source/core/page/PageAnimator.cpp#newcode80 third_party/WebKit/Source/core/page/PageAnimator.cpp:80: DCHECK(!m_suppressFrameRequestsWorkaroundFor704763Only || This could be != Instead of ...
3 years, 8 months ago (2017-04-05 08:33:02 UTC) #32
alancutter (OOO until 2018)
https://codereview.chromium.org/2791223002/diff/120001/third_party/WebKit/Source/core/page/PageAnimator.cpp File third_party/WebKit/Source/core/page/PageAnimator.cpp (right): https://codereview.chromium.org/2791223002/diff/120001/third_party/WebKit/Source/core/page/PageAnimator.cpp#newcode80 third_party/WebKit/Source/core/page/PageAnimator.cpp:80: DCHECK(!m_suppressFrameRequestsWorkaroundFor704763Only || On 2017/04/05 at 08:33:02, esprehn wrote: > ...
3 years, 8 months ago (2017-04-05 10:04:18 UTC) #33
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2791223002/120001
3 years, 8 months ago (2017-04-05 10:04:52 UTC) #35
commit-bot: I haz the power
3 years, 8 months ago (2017-04-05 10:10:23 UTC) #38
Message was sent while issue was closed.
Committed patchset #7 (id:120001) as
https://chromium.googlesource.com/chromium/src/+/317a8e0e26459f401312043fa99e...

Powered by Google App Engine
This is Rietveld 408576698