Summary: | 100% cpu usage for "transition: opacity" animation | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Luciano Wolf <luciano.wolf> | ||||||
Component: | WebKit2 | Assignee: | Luciano Wolf <luciano.wolf> | ||||||
Status: | CLOSED FIXED | ||||||||
Severity: | Normal | CC: | cmarcelo, commit-queue, dino, hugo.lima, jb.seo, jturcotte, luiz, noam, sergio, simon.fraser, zeno | ||||||
Priority: | P2 | ||||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
URL: | http://www.webkit.org/blog-files/leaves/ | ||||||||
Attachments: |
|
It also detected and resolved by your idea with Qt port. So, is this patch useful? Should I updated it with ChangeLog info and ask for review? (In reply to comment #2) > So, is this patch useful? Should I updated it with ChangeLog info and ask for review? Yes please! Created attachment 209793 [details]
Patch
I added a reivew as a comment. (Because, I don't have the auth.)
Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:399
> scheduleLayerFlush();
I think, scheduleLayerFlush() at this moment is meaningless.
How about erase that and insert below?
if(!m_layerFlushSchedulingEnabled)
return;
Comment on attachment 209793 [details] Patch Clearing flags on attachment: 209793 Committed r154711: <http://trac.webkit.org/changeset/154711> All reviewed patches have been landed. Closing bug. (In reply to comment #5) > I added a reivew as a comment. (Because, I don't have the auth.) > > Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:399 > > scheduleLayerFlush(); > > I think, scheduleLayerFlush() at this moment is meaningless. > How about erase that and insert below? > > if(!m_layerFlushSchedulingEnabled) > return; Sorry, I missed your comment among commit messages :) I'll test and provide an updated patch. Thanks for your suggestion. |
Created attachment 209095 [details] Proposed fix - WIP - doesn't include ChangeLog yet. While running leaves demo, the CPU tops at 100% for WebProcess. Even simple examples like LayoutTests/compositing/repaint/opacity-between-absolute.html does the same. Doing some research I've found that CoordinatedLayerTreeHost::scheduleAnimation() does set a timer for animation and right after that it schedules again the same timer with 0. This behavior could be avoided if we call scheduleLayerFlush() before m_layerFlushTimer.startOneShot(m_coordinator->nextAnimationServiceTime()). I've detected this issue on NIX port, but I wasn't able to compile Qt, GTK or EFL.